From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期二, 30 八月 2022 09:37:38 +0800 Subject: [PATCH] 合并了IOS的代码 --- ZigbeeApp/Shared/Phone/ZigBee/Device/Airer.cs | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 209 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/Airer.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/Airer.cs new file mode 100644 index 0000000..7ce6ad0 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/Airer.cs @@ -0,0 +1,209 @@ +锘縰sing System; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; +namespace ZigBee.Device +{ + /// <summary> + ///娉ㄦ剰浜嬮」锛氭櫨琛f灦,鍙樉绀哄苟瀛樺偍1绔偣锛屽叾浠栫鐐癸紙2锝�5锛夎繃婊わ紝涓嶅瓨鍌�, + ///鍥犱负鍏朵粬绔偣鍙湁鎺у埗浣滅敤锛岋紙绔偣2:鎺у埗鐓ф槑锛岀鐐�3:鎺у埗椋庡共锛岀鐐�4:鎺у埗鐑樺共锛岀鐐�5:鎺у埗娑堟瘨锛� + /// </summary> + [System.Serializable] + public class Airer : CommonDevice + { + public Airer() + { + this.Type = DeviceType.Airer; + } + + /// <summary> + /// 寮�鍏夌姸鎬�:0=鍏�,1=寮�, + ///娉ㄦ剰浜嬮」锛氭櫨琛f灦,鍙樉绀哄苟瀛樺偍1绔偣锛屽叾浠栫鐐癸紙2锝�5锛夎繃婊わ紝涓嶅瓨鍌�, + ///鍥犱负鍏朵粬绔偣鍙湁鎺у埗浣滅敤锛岋紙绔偣2:鎺у埗鐓ф槑锛岀鐐�3:鎺у埗椋庡共锛岀鐐�4:鎺у埗鐑樺共锛岀鐐�5:鎺у埗娑堟瘨锛� + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int OnOffStatus = 0; + + /// <summary> + /// 鐑樺共鐘舵��:0=鍏�,1=寮�, + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int DryOnOffStatus = 0; + + /// <summary> + /// 椋庡共鐘舵��:0=鍏�,1=寮�, + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int WindOnOffStatus = 0; + + /// <summary> + /// 娑堟瘨鐘舵��:0=鍏�,1=寮�, + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int DisinfectOnOffStatus = 0; + + /// <summary> + /// 鐑樺共鏃堕棿 + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int DryTime = 0; + /// <summary> + /// 鍓╀綑鐑樺共鏃堕棿 (榛樿0绉掞級 + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int DryRemainTime = 0; + + /// <summary> + /// 椋庡共鏃堕棿 + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int WindTime = 0; + /// <summary> + /// 鍓╀綑椋庡共鏃堕棿 (榛樿0绉掞級 + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int WindRemainTime = 0; + + /// <summary> + /// 娑堟瘨鏃堕棿 + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int DisinfectTime = 0; + /// <summary> + /// 鍓╀綑娑堟瘨鏃堕棿 (榛樿0绉掞級 + /// </summary> + [Newtonsoft.Json.JsonIgnore] + public int DisinfectRemainTime = 0; + + #region 寮�鍏� + ///<summary > + ///琛f灦寮�鍏冲仠鎺у埗 + /// <para>command鐨勫��</para> + ///<para>0 : 琛f灦璁惧涓婃媺鎴栨墦寮�</para> + ///<para>1: 琛f灦璁惧涓嬮檷鎴栧叧闂�</para> + ///<para>2:琛f灦璁惧鍋滄</para> + ///<para>娉ㄦ剰浜嬮」锛氭櫨琛f灦,鍙樉绀哄苟瀛樺偍1绔偣锛屽叾浠栫鐐癸紙2锝�5锛夎繃婊わ紝涓嶅瓨鍌�,</para> + ///<para>鍥犱负鍏朵粬绔偣鍙湁鎺у埗浣滅敤锛岋紙绔偣2:鎺у埗鐓ф槑锛岀鐐�3:鎺у埗椋庡共锛岀鐐�4:鎺у埗鐑樺共锛岀鐐�5:鎺у埗娑堟瘨锛� </para> + /// </summary> + public void AirerUpDownStopControl(int command) + { + var jobject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", 258 }, { "Command", command }, { "SendMode", 2 } }; + Gateway?.Send("DeviceControl", jobject.ToString()); + System.Console.WriteLine("CurtainOpenControl_鍙戦�佹暟鎹�" + "_" + jobject.ToString() + "_" + System.DateTime.Now.ToString()); + } + #endregion + + #region 鈻� 璁惧鏃堕棿璁剧疆___________________________ + ///<summary > + ///璁惧鏃堕棿璁� + ///<para>娉ㄦ剰浜嬮」锛氭櫨琛f灦,鍙樉绀哄苟瀛樺偍1绔偣锛屽叾浠栫鐐癸紙2锝�5锛夎繃婊わ紝涓嶅瓨鍌�,</para> + ///<para>鍥犱负鍏朵粬绔偣鍙湁鎺у埗浣滅敤锛岋紙绔偣2:鎺у埗鐓ф槑锛岀鐐�3:鎺у埗椋庡共锛岀鐐�4:鎺у埗鐑樺共锛岀鐐�5:鎺у埗娑堟瘨锛� </para> + /// </summary> + public async System.Threading.Tasks.Task<SetWritableValueResponAllData> SetAirerTimeAsync(int time, int controlEpoint) + { + 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 temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.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 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", controlEpoint }, { "Cluster_ID", 6 }, { "Command", 120 } }; + var data = new JObject { { "Undivided", 0 }, { "AttributeId", 16385 }, { "AttributeDataType", 33 }, { "AttributeData", time } }; + 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; + }); + } + #endregion + + #region 鈻� 璁惧鏃堕棿璁剧疆___________________________ + /// <summary> + /// 璁剧疆鏃堕棿鍒拌。鏋� + ///<para>娉ㄦ剰浜嬮」锛氭櫨琛f灦,鍙樉绀哄苟瀛樺偍1绔偣锛屽叾浠栫鐐癸紙2锝�5锛夎繃婊わ紝涓嶅瓨鍌�,</para> + ///<para>鍥犱负鍏朵粬绔偣鍙湁鎺у埗浣滅敤锛岋紙绔偣2:鎺у埗鐓ф槑锛岀鐐�3:鎺у埗椋庡共锛岀鐐�4:鎺у埗鐑樺共锛岀鐐�5:鎺у埗娑堟瘨锛� </para> + /// </summary> + public async void SetAirerFunTimeDevice(int time, int controlEpoint) + { + await SetAirerTimeAsync(time, controlEpoint); + } + #endregion + + #region 寮�鍏� + ///<summary > + ///寮�鍏虫帶鍒�(浠呯敤浜巆luster=6鐨勮澶囷級 + /// <para>璁惧鏀寔cluster=6鐨勮澶囨墠鑳借皟鐢ㄨ鎺ュ彛</para> + /// <para>command鐨勫��</para> + ///<para>0 : 鍏抽棴</para> + ///<para>1: 鎵撳紑</para> + ///<para>2锛氬彇鍙�</para> + /// </summary> + public void SwitchControl(int command, int ctrlEpoint) + { + try + { + var jobject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", ctrlEpoint }, { "Cluster_ID", 6 }, { "Command", command }, { "SendMode", 2 } }; + Gateway?.Send(("DeviceControl"), jobject.ToString()); + System.Console.WriteLine("SwitchControl_鍙戦�佹暟鎹�" + "_" + jobject.ToString() + "_" + System.DateTime.Now.ToString()); + + } + catch { } + } + #endregion + } +} -- Gitblit v1.8.0