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