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 | 841 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 636 insertions(+), 205 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 63fc904..6fda75c --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs @@ -1,207 +1,638 @@ -锘縰sing Shared.Common; -using System; -using System.Collections.Generic; -using System.Text; -using ZigBee.Device; - -namespace Shared.Phone.UserCenter -{ - /// <summary> - /// 璁惧灞炴�т笂鎶ョ殑閫昏緫绫� - /// </summary> - public class HdlDeviceAttributeLogic : ZigBee.Common.IStatus - { - #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; - } - } - - /// <summary> - /// 浜嬩欢闆嗗悎 - /// </summary> - private Dictionary<string, Action<CommonDevice>> dicEvent = new Dictionary<string, Action<CommonDevice>>(); - /// <summary> - /// 鍛戒护鍖哄垎 - /// </summary> - private Dictionary<string, string> dicCommandDiv = new Dictionary<string, string>(); - - #endregion - - #region 鈻� 娣诲姞浜嬩欢___________________________ - - /// <summary> - /// 娣诲姞鑾峰彇璁惧灞炴�х殑浜嬩欢(鎺ㄩ�佸凡缁忓己鍒舵寚瀹氳繍琛屼簬涓荤嚎绋嬶紝灞炴�т笂鎶ョ殑瀵硅薄锛歞evice.DeviceStatusReport) - /// </summary> - /// <param name="mainKeys">鏍囪瘑浜嬩欢鐨勪富閿�(鍙互闅忎究濉�,涓昏鏄拡瀵瑰涓晫闈竴璧蜂娇鐢ㄧ殑鎯呭喌)</param> - /// <param name="comand">鍛戒护鍖哄垎,姣斿锛欴eviceStatusReport,IASInfoReport绛夌瓑</param> - /// <param name="action">褰撴帴鏀跺埌缃戝叧鍥炲涔嬪悗鐨勫洖璋冨嚱鏁�,灞炴�т笂鎶ョ殑瀵硅薄锛歞evice.DeviceStatusReport</param> - public void AddAttributeEvent(string mainKeys, string comand, Action<CommonDevice> action) - { - lock (this.dicEvent) - { - if (this.dicEvent.Count == 0) - { - ZbGateway.StatusList.Add(this); - } - this.dicEvent[mainKeys] = action; - this.dicCommandDiv[mainKeys] = comand; - } - } - - #endregion - - #region 鈻� 绉婚櫎鐩戝惉___________________________ - - /// <summary> - /// 绉婚櫎浜嬩欢 - /// </summary> - /// <param name="mainKeys">鏍囪瘑浜嬩欢鐨勪富閿�(鍙互闅忎究濉�,涓昏鏄拡瀵瑰涓晫闈竴璧蜂娇鐢ㄧ殑鎯呭喌)</param> - public void RemoveEvent(string mainKeys) - { - lock (this.dicEvent) - { - if (this.dicEvent.ContainsKey(mainKeys) == true) - { - var action = this.dicEvent[mainKeys]; - this.dicEvent.Remove(mainKeys); - this.dicCommandDiv.Remove(mainKeys); - - action = null; - } - if (this.dicEvent.Count == 0) - { - ZbGateway.StatusList.Remove(this); - } - } - } - - /// <summary> - /// 绉婚櫎鍏ㄩ儴鐨勪簨浠� - /// </summary> - public void RemoveAllEvent() - { - lock (this.dicEvent) - { - var list = new HashSet<string>(); - foreach (var keys in this.dicEvent.Keys) - { - list.Add(keys); - } - foreach (var keys in list) - { - //闇�瑕佹參鎱竴涓竴涓殑閲婃斁Action,鍚 - this.RemoveEvent(keys); - } - } - } - - #endregion - - #region 鈻� 瀹炵幇鎺ュ彛___________________________ - - /// <summary> - /// 璁惧鐘舵�侀�氱煡 - /// </summary> - /// <param name="common"></param> - /// <param name="typeTag"></param> - public void DeviceInfoChange(CommonDevice common, string typeTag) - { - if (common == null || string.IsNullOrEmpty(common.DeviceAddr) == true) - { - //鎴戜篃涓嶇煡閬撹繖鏈夋病鏈夊彲鑳� - return; - } - - lock (this.dicEvent) - { - var list = new List<Action<CommonDevice>>(); - foreach (string keys in this.dicEvent.Keys) - { - if (this.dicCommandDiv[keys] != typeTag) - { - //鍛戒护鍖哄垎涓嶄竴鑷达紝鍒欎笉璋冪敤鍥炶皟鍑芥暟 - continue; - } - //鍛戒护鍖哄垎涓�鑷存椂锛屽垯璋冪敤鍥炶皟鍑芥暟 - list.Add(this.dicEvent[keys]); - } - //鏈夊彲鑳藉湪鍥炶皟鍑芥暟涓Щ闄や簡浜嬩欢锛屽鑷存姤閿欙紝鎵�浠ュ厛鏀堕泦锛屽啀璋冪敤 - Application.RunOnMainThread(() => - { - foreach (var action in list) - { - try - { - action?.Invoke(common); - } - catch (Exception ex) - { - //Log鍑哄姏 - string msg = "褰撳墠婵�娲荤殑鐣岄潰[" + UserCenterResourse.NowActionFormID + "]"; - HdlLogLogic.Current.WriteLog(-1, msg); - HdlLogLogic.Current.WriteLog(ex); - } - - } - }); - } - } - - /// <summary> - /// 涓嶄娇鐢� - /// </summary> - /// <param name="common"></param> - public void Changed(CommonDevice common) - { - } - - /// <summary> - /// 涓嶄娇鐢� - /// </summary> - public void ChangedILogicStatus(ZigBee.Device.Logic logic) - { - } - - /// <summary> - /// 涓嶄娇鐢� - /// </summary> - public void ChangedISceneStatus(Scene scene) - { - } - #endregion - - #region 鈻� 涓�鑸柟娉昣__________________________ - - /// <summary> - /// 鏄惁瀛樺湪鎸囧畾鐨勪簨浠� - /// </summary> - /// <param name="mainkeys"></param> - /// <returns></returns> - public bool IsEsixt(string mainkeys) - { - return this.dicCommandDiv.ContainsKey(mainkeys); - } - - #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> + /// <param name="device">璁惧</param> + public void SendACStatuComand(CommonDevice device) + { + if (device == null) + { + return; + } + new System.Threading.Thread(() => + { + SendFanStatuComand(device); + System.Threading.Thread.Sleep(300); + SendThermostatStatuComand(device); + }) + { IsBackground = true }.Start(); + } + + /// <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()); + } + + /// <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()); + } + + #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) + { + 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()); + } + + #endregion + + #region 鈻� 鐏厜_______________________________ + + /// <summary> + /// Light + /// </summary> + /// <param name="device"></param> + public void SendLightStatuComand(CommonDevice device) + { + SendSwitchStatuComand(device); + } + + /// <summary> + /// Light + /// </summary> + /// <param name="device"></param> + public void SendDimmableLightStatuComand(CommonDevice device) + { + if (device == null) + { + return; + } + new System.Threading.Thread(() => + { + SendSwitchStatuComand(device); + System.Threading.Thread.Sleep(300); + SendLevelStatuComand(device); + }) + { IsBackground = true }.Start(); + } + + /// <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()); + } + + /// <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()); + } + + #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 + + #region 鈻� 娓╂箍搴____________________________ + + /// <summary> + /// 璇诲彇娓╁害 + /// </summary> + /// <param name="device"></param> + public void SendTemperatureStatuComand(CommonDevice device) + { + if (device == null) + { + return; + } + var jObject = new Newtonsoft.Json.Linq.JObject + { + { "DeviceAddr",device.DeviceAddr }, + { "Epoint", device.DeviceEpoint }, + { "Cluster_ID", (int)Cluster_ID.TemperatureMeasurement }, + { "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()); + } + + /// <summary> + /// 璇诲彇婀垮害 + /// </summary> + /// <param name="device"></param> + public void SendHumidityStatuComand(CommonDevice device) + { + if (device == null) + { + return; + } + var jObject = new Newtonsoft.Json.Linq.JObject + { + { "DeviceAddr",device.DeviceAddr }, + { "Epoint", device.DeviceEpoint }, + { "Cluster_ID", (int)Cluster_ID.RelativeHumidityMeasurement }, + { "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 + } +} -- Gitblit v1.8.0