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/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs |  763 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 489 insertions(+), 274 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
old mode 100755
new mode 100644
index 653e1d9..6fda75c
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
@@ -1,134 +1,74 @@
-锘縰sing Shared.Common;
-using System;
-using System.Collections.Generic;
-using System.Text;
-using ZigBee.Device;
-
-namespace Shared.Phone.UserCenter
-{
-    /// <summary>
-    /// 璁惧灞炴�х殑閫昏緫绫�
-    /// </summary>
-    public class HdlDeviceAttributeLogic
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// 灞炴�х殑閫昏緫
+锘縰sing Shared.Common;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter
+{
+    /// <summary>
+    /// 璁惧灞炴�х殑閫昏緫绫�
+    /// </summary>
+    public class HdlDeviceAttributeLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 灞炴�х殑閫昏緫
         /// </summary>
-        private static HdlDeviceAttributeLogic m_Current = null;
-        /// <summary>
-        /// 灞炴�х殑閫昏緫
+        private static HdlDeviceAttributeLogic m_Current = null;
+        /// <summary>
+        /// 灞炴�х殑閫昏緫
         /// </summary>
-        public static HdlDeviceAttributeLogic Current
-        {
-            get
-            {
-                if (m_Current == null)
-                {
-                    m_Current = new HdlDeviceAttributeLogic();
-                }
-                return m_Current;
-            }
-            set
-            {
-                m_Current = value;
-            }
-        }
-
-        #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, object 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 } };
-                Newtonsoft.Json.Linq.JObject data = null;
-                if (attributeData is int)
-                {
-                    data = new Newtonsoft.Json.Linq.JObject { { "Undivided", 0 }, { "AttributeId", attributeId }, { "AttributeDataType", attributeDataType }, { "AttributeData", Convert.ToInt32(attributeData) } };
-                }
-                else
-                {
-                    data = new Newtonsoft.Json.Linq.JObject { { "Undivided", 0 }, { "AttributeId", attributeId }, { "AttributeDataType", attributeDataType }, { "AttributeData", attributeData.ToString() } };
-                }
-                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
-
+        public static HdlDeviceAttributeLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlDeviceAttributeLogic();
+                }
+                return m_Current;
+            }
+            set
+            {
+                m_Current = value;
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍐欏叆璁惧灞炴�______________________
+
+        /// <summary>
+        /// 鑾峰彇鏇存敼璁惧绉佹湁灞炴�х殑鍛戒护
+        /// </summary>
+        /// <param name="clusterId"></param>
+        /// <param name="attributeId"></param>
+        /// <param name="attributeDataType"></param>
+        /// <param name="attributeData"></param>
+        /// <returns></returns>
+        public string GetWriteDeviceAttributeText(string DeviceAddr, int DeviceEpoint, int clusterId, int attributeId, int attributeDataType, object attributeData)
+        {
+            var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", clusterId }, { "Command", 120 } };
+            Newtonsoft.Json.Linq.JObject data = null;
+            if (attributeData is int)
+            {
+                data = new Newtonsoft.Json.Linq.JObject { { "Undivided", 0 }, { "AttributeId", attributeId }, { "AttributeDataType", attributeDataType }, { "AttributeData", Convert.ToInt32(attributeData) } };
+            }
+            else
+            {
+                data = new Newtonsoft.Json.Linq.JObject { { "Undivided", 0 }, { "AttributeId", attributeId }, { "AttributeDataType", attributeDataType }, { "AttributeData", attributeData.ToString() } };
+            }
+            jObject.Add("Data", data);
+
+            return jObject.ToString();
+        }
+
+        #endregion
+
         #region 鈻� 绌鸿皟_______________________________
-
+
         /// <summary>
         /// SendACStatuComand
         /// </summary>
@@ -148,122 +88,365 @@
             { IsBackground = true }.Start();
         }
 
-        /// <summary>
-        /// SendThermostatStatuComand
-        /// </summary>
-        /// <param name="device">璁惧</param>
-        public void SendThermostatStatuComand(CommonDevice device)
-        {
+        /// <summary>
+        /// SendThermostatStatuComand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        public void SendThermostatStatuComand(CommonDevice device)
+        {
             if (device == null)
             {
                 return;
             }
-            var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.Thermostat },
-                { "Command", 108 }
-            };
-            var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.LocalTemperature}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.CoolingSetpoint}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.HeatingSetpoint}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.AutoSetpoint}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.SystemMode}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.AcModeSupport}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.CleanStatu}
-               }
-            };
-            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
-            jObject.Add("Data", data);
-            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.Thermostat },
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.LocalTemperature}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.CoolingSetpoint}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.HeatingSetpoint}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.AutoSetpoint}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.SystemMode}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.AcModeSupport}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.CleanStatu}
+               }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
         }
 
-        /// <summary>
-        /// SendFanStatuComand
-        /// </summary>
-        /// <param name="device">璁惧</param>
-        private void SendFanStatuComand(CommonDevice device)
-        {
+        /// <summary>
+        /// SendFanStatuComand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        private void SendFanStatuComand(CommonDevice device)
+        {
             if (device == null)
             {
                 return;
             }
-            var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.FanControl },
-                { "Command", 108 }
-            };
-            var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.FanMode}
-               },
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.FanSwing}
-               }
-            };
-            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
-            jObject.Add("Data", data);
-            device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.FanControl },
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.FanMode}
+               },
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.FanSwing}
+               }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
+        }
+
+        #endregion
+
+        #region 鈻� 鏂伴_______________________________
+        /// <summary>
+        /// SendFreshAirStatuComand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        public void SendFreshAirStatuComand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            new System.Threading.Thread(() =>
+            {
+                SendFreshAirFanStatuComand(device);
+                System.Threading.Thread.Sleep(300);
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// SendFanStatuComand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        private void SendFreshAirFanStatuComand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.FanControl },
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.FanMode}
+               }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
+        }
+
+        #endregion
+
+        #region 鈻� PM2.5_______________________________
+        /// <summary>
+        /// SendPmSensorComand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        public void SendPmSensorComand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            new System.Threading.Thread(() =>
+            {
+                SendPm2P5Comand(device);
+                //璇诲彇Pm2.5浼犳劅鍣ㄧ殑娓╁害鏁版嵁
+                HdlDeviceAttributeLogic.Current.SendTemperatureStatuComand(device);
+                //璇诲彇Pm2.5浼犳劅鍣ㄧ殑婀垮害鏁版嵁
+                HdlDeviceAttributeLogic.Current.SendHumidityStatuComand(device);
+                System.Threading.Thread.Sleep(300);
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// SendFanStatuComand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        private void SendPm2P5Comand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.PmTwoPointFiveMeasurement  },
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.MeasuredValue}
+               }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
+        }
+
+        #endregion
+
+        #region 鈻� 绌烘皵璐ㄩ噺浼犳劅鍣╛______________________________
+        /// <summary>
+        /// SendAirQualitySensorComand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        public void SendAirQualitySensorComand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            new System.Threading.Thread(() =>
+            {
+                SendSwitchStatuComand(device);
+                //绌烘皵璐ㄩ噺浼犳劅鍣ㄧ殑PM2.5鏁版嵁
+                SendPm2P5Comand(device);
+                //绌烘皵璐ㄩ噺浼犳劅鍣ㄧ殑CO2鏁版嵁[2021.01.13浜у搧瑕佹眰鏆傛椂鍘绘帀]
+                //SendCO2Comand(device);
+                //绌烘皵璐ㄩ噺浼犳劅鍣ㄧ殑娓╁害鏁版嵁
+                HdlDeviceAttributeLogic.Current.SendTemperatureStatuComand(device);
+                //绌烘皵璐ㄩ噺浼犳劅鍣ㄧ殑婀垮害鏁版嵁
+                HdlDeviceAttributeLogic.Current.SendHumidityStatuComand(device);
+                System.Threading.Thread.Sleep(300);
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// SendCO2Comand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        private void SendCO2Comand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.CO2},
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.MeasuredValue}
+               }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
+        }
+
+        #endregion
+
+        #region 鈻� 鏅捐。鏋禵______________________________
+        /// <summary>
+        /// SendAirerComand
+        ///鍥炶矾2:璇诲彇鐓ф槑寮�鍏崇姸鎬�
+        ///鍥炶矾3:璇诲彇椋庡共寮�鍏崇姸鎬佸拰鏃堕棿鍊� 
+        ///鍥炶矾4:璇诲彇鐑樺共寮�鍏崇姸鎬佸拰鏃堕棿鍊�
+        ///鍥炶矾5:璇诲彇娑堟瘨寮�鍏崇姸鎬佸拰鏃堕棿鍊�
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        /// <param name="ctrlEpoint">鎺у埗绔偣</param>
+        public void SendAirerComand(CommonDevice device, int ctrlEpoint)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            new System.Threading.Thread(() =>
+            {
+                SendAirerStatuComand(device, ctrlEpoint);
+                System.Threading.Thread.Sleep(300);
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// SendAirerStatuComand
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        private void SendAirerStatuComand(CommonDevice device, int ctrlEpoint = 1)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", ctrlEpoint },
+                { "Cluster_ID", (int)Cluster_ID.Switch},
+                { "Command", 108 }
+            };
+            Newtonsoft.Json.Linq.JArray attriBute = new Newtonsoft.Json.Linq.JArray();
+
+            //鏅捐。鏋剁殑鏅捐。鏋剁殑锛堢儤骞诧紝椋庡共锛屾秷姣�,鐓ф槑鐘舵�佽鍙栵級
+            attriBute = new Newtonsoft.Json.Linq.JArray
+             {
+                new Newtonsoft.Json.Linq.JObject
+               {
+                    //鏅捐。鏋剁殑鐓ф槑寮�鍏崇姸鎬�
+                 { "AttriButeId", (int)AttriButeId.Switch}
+               }
+             };
+
+            //if (device.DeviceEpoint != 2)
+            //{
+            //鐢变簬璁惧涓嶆敮鎸佹椂闂村姛鑳斤紝鍚庢湡鎵嶆敮鎸侊紝娉ㄦ剰澶勭悊鏃堕棿瑕佹牴鎹儤骞诧紝椋庡共锛屾秷姣掓槸鍚﹀紑鎵嶅彂閫佺浉搴斿ぇ鏃堕棿璇诲彇鏁版嵁
+            //attriBute = new Newtonsoft.Json.Linq.JArray {
+            //        new Newtonsoft.Json.Linq.JObject
+            //       {
+            //            //鏅捐。鏋剁殑寮�鍏崇姸鎬侊紙鐑樺共锛岄骞诧紝娑堟瘨锛�
+            //         { "AttriButeId", (int)AttriButeId.Switch}
+            //       },
+            //           new Newtonsoft.Json.Linq.JObject
+            //       {
+            //            //鏅捐。鏋剁殑鏅捐。鏋剁殑锛堢儤骞诧紝椋庡共锛屾秷姣掞級鍓╀綑鏃堕棿
+            //         { "AttriButeId", (int)AttriButeId.AirerRemainTime}
+            //       },
+            //       new Newtonsoft.Json.Linq.JObject
+            //       {
+            //           //鏅捐。鏋剁殑锛堢儤骞诧紝椋庡共锛屾秷姣掞級鏃堕棿
+            //         { "AttriButeId", (int)AttriButeId.AirerTime}
+            //       }
+            //    };
+            //}
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send("GetDeviceStatus", jObject.ToString());
         }
 
         #endregion
 
         #region 鈻� 绐楀笜_______________________________
-        /// <summary>
-        /// 鍙戦�佽幏鍙栫獥甯樼姸鎬佸懡浠�
-        /// </summary>
-        /// <param name="device">绐楀笜</param>
-        public void SendCurtainStatuComand(CommonDevice device)
-        {
+        /// <summary>
+        /// 鍙戦�佽幏鍙栫獥甯樼姸鎬佸懡浠�
+        /// </summary>
+        /// <param name="device">绐楀笜</param>
+        public void SendCurtainStatuComand(CommonDevice device)
+        {
             if (device == null)
             {
                 return;
             }
-            var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.WindowCovering },
-                { "Command", 108 }
-            };
-            var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.CurrentPositionLiftPercentage}
-               }
-            };
-            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
-            jObject.Add("Data", data);
-            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.WindowCovering },
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.CurrentPositionLiftPercentage}
+               }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
         }
 
         #endregion
@@ -298,62 +481,94 @@
             { IsBackground = true }.Start();
         }
 
-        /// <summary>
-        /// 鍙戦�佽幏鍙栫伅鍏夌姸鎬佸懡浠�
-        /// </summary>
-        /// <param name="device">绐楀笜</param>
-        private void SendSwitchStatuComand(CommonDevice device)
-        {
+        /// <summary>
+        /// 鍙戦�佽幏鍙栫伅鍏夌姸鎬佸懡浠�
+        /// </summary>
+        /// <param name="device">绐楀笜</param>
+        private void SendSwitchStatuComand(CommonDevice device)
+        {
             if (device == null)
             {
                 return;
             }
-            var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.Switch },
-                { "Command", 108 }
-            };
-            var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.Switch}
-               }
-            };
-            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
-            jObject.Add("Data", data);
-            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.Switch },
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.Switch}
+               }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
         }
 
-        /// <summary>
-        /// 鍙戦�佽幏鍙栫伅鍏夌姸鎬佸懡浠�
-        /// </summary>
-        /// <param name="device">绐楀笜</param>
-        private void SendLevelStatuComand(CommonDevice device)
-        {
+        /// <summary>
+        /// 鍙戦�佽幏鍙栫伅鍏夌姸鎬佸懡浠�
+        /// </summary>
+        /// <param name="device">绐楀笜</param>
+        public void SendLevelStatuComand(CommonDevice device)
+        {
             if (device == null)
             {
                 return;
             }
-            var jObject = new Newtonsoft.Json.Linq.JObject
-            {
-                { "DeviceAddr",device.DeviceAddr },
-                { "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.LevelControl },
-                { "Command", 108 }
-            };
-            var attriBute = new Newtonsoft.Json.Linq.JArray
-            {
-               new Newtonsoft.Json.Linq.JObject
-               {
-                 { "AttriButeId", (int)AttriButeId.LevelControl}
-               }
-            };
-            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
-            jObject.Add("Data", data);
-            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.LevelControl },
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.LevelControl}
+               }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
+        }
+
+        #endregion
+
+        #region 鈻� 鑹叉俯鐏痏____________________________
+
+        /// <summary>
+        /// 鍙戦�佽幏鍙栬壊娓╃伅鐘舵�佸懡浠�
+        /// </summary>
+        /// <param name="device"></param>
+        public void SendColorTemperatureLightStatuComand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            var colorDevice = (ColorTemperatureLight)device;
+            new System.Threading.Thread(() =>
+            {
+                colorDevice.ReadOnOffStatus();
+                System.Threading.Thread.Sleep(300);
+                colorDevice.ReadLevel();
+                System.Threading.Thread.Sleep(300);
+                colorDevice.ReadColorTemperature();
+                if (LocalDevice.Current.IsMiniLight(device) == true)
+                {
+                    //mini澶滅伅闇�瑕佽鍙栬渹楦e櫒鐘舵��
+                    System.Threading.Thread.Sleep(300);
+                    colorDevice.ReadBuzzerStatu();
+                }
+            })
+            { IsBackground = true }.Start();
         }
 
         #endregion
@@ -418,6 +633,6 @@
             device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
         }
 
-        #endregion
-    }
-}
+        #endregion
+    }
+}

--
Gitblit v1.8.0