From 4f0ab0ad21ce450b7856d50f98322a7899361386 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期二, 22 九月 2020 10:30:01 +0800
Subject: [PATCH] 不要下载这个备份
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs | 533 ++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 419 insertions(+), 114 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
index 6ae148a..ec80f72 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
@@ -7,18 +7,18 @@
namespace Shared.Phone.UserCenter
{
/// <summary>
- /// 璁惧灞炴�т笂鎶ョ殑閫昏緫绫�
+ /// 璁惧灞炴�х殑閫昏緫绫�
/// </summary>
- public class HdlDeviceAttributeLogic : ZigBee.Common.IStatus
+ public class HdlDeviceAttributeLogic
{
#region 鈻� 鍙橀噺澹版槑___________________________
/// <summary>
- /// 灞炴�т笂鎶ョ殑閫昏緫
+ /// 灞炴�х殑閫昏緫
/// </summary>
private static HdlDeviceAttributeLogic m_Current = null;
/// <summary>
- /// 灞炴�т笂鎶ョ殑閫昏緫
+ /// 灞炴�х殑閫昏緫
/// </summary>
public static HdlDeviceAttributeLogic Current
{
@@ -36,159 +36,464 @@
}
}
- /// <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 鈻� 娣诲姞浜嬩欢___________________________
+ #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)
+ /// <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)
{
- lock (this.dicEvent)
+ 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)
{
- if (this.dicEvent.Count == 0)
- {
- ZbGateway.StatusList.Add(this);
- }
- this.dicEvent[mainKeys] = action;
- this.dicCommandDiv[mainKeys] = comand;
+ 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 鈻� 绉婚櫎鐩戝惉___________________________
+ #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="mainKeys">鏍囪瘑浜嬩欢鐨勪富閿�(鍙互闅忎究濉�,涓昏鏄拡瀵瑰涓晫闈竴璧蜂娇鐢ㄧ殑鎯呭喌)</param>
- public void RemoveEvent(string mainKeys)
+ /// <param name="device">璁惧</param>
+ public void SendThermostatStatuComand(CommonDevice device)
{
- lock (this.dicEvent)
+ if (device == null)
+ {
+ return;
+ }
+ var jObject = new Newtonsoft.Json.Linq.JObject
{
- 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);
- }
- }
- }
-
+ { "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>
- public void RemoveAllEvent()
+ /// <param name="device">璁惧</param>
+ private void SendFanStatuComand(CommonDevice device)
{
- lock (this.dicEvent)
+ if (device == null)
+ {
+ return;
+ }
+ var jObject = new Newtonsoft.Json.Linq.JObject
{
- 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 鈻� 瀹炵幇鎺ュ彛___________________________
-
+ { "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="common"></param>
- /// <param name="typeTag"></param>
- public void DeviceInfoChange(CommonDevice common, string typeTag)
+ /// <param name="device">璁惧</param>
+ public void SendFreshAirStatuComand(CommonDevice device)
{
- if (common == null || string.IsNullOrEmpty(common.DeviceAddr) == true)
+ if (device == null)
{
- //鎴戜篃涓嶇煡閬撹繖鏈夋病鏈夊彲鑳�
return;
}
-
- lock (this.dicEvent)
+ new System.Threading.Thread(() =>
{
- var list = new List<Action<CommonDevice>>();
- foreach (string keys in this.dicEvent.Keys)
- {
- if (this.dicCommandDiv[keys] != typeTag)
- {
- //鍛戒护鍖哄垎涓嶄竴鑷达紝鍒欎笉璋冪敤鍥炶皟鍑芥暟
- continue;
- }
- //鍛戒护鍖哄垎涓�鑷存椂锛屽垯璋冪敤鍥炶皟鍑芥暟
- list.Add(this.dicEvent[keys]);
- }
- //鏈夊彲鑳藉湪鍥炶皟鍑芥暟涓Щ闄や簡浜嬩欢锛屽鑷存姤閿欙紝鎵�浠ュ厛鏀堕泦锛屽啀璋冪敤
- foreach (var action in list)
- {
- action(common);
- }
- list.Clear();
+ 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(() =>
+ {
+ SendPmSensorStatuComand(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="common"></param>
- public void Changed(CommonDevice common)
+ /// <param name="device">璁惧</param>
+ private void SendPmSensorStatuComand(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());
}
- /// <summary>
- /// 涓嶄娇鐢�
- /// </summary>
- public void ChangedILogicStatus(ZigBee.Device.Logic logic)
- {
- }
-
- /// <summary>
- /// 涓嶄娇鐢�
- /// </summary>
- public void ChangedISceneStatus(Scene scene)
- {
- }
#endregion
- #region 鈻� 涓�鑸柟娉昣__________________________
-
+ #region 鈻� 绐楀笜_______________________________
/// <summary>
- /// 鏄惁瀛樺湪鎸囧畾鐨勪簨浠�
+ /// 鍙戦�佽幏鍙栫獥甯樼姸鎬佸懡浠�
/// </summary>
- /// <param name="mainkeys"></param>
- /// <returns></returns>
- public bool IsEsixt(string mainkeys)
+ /// <param name="device">绐楀笜</param>
+ public void SendCurtainStatuComand(CommonDevice device)
{
- return this.dicCommandDiv.ContainsKey(mainkeys);
+ 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