From d978b68da978982b35dd7d7da27217925cf8d788 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期三, 29 四月 2020 09:34:28 +0800
Subject: [PATCH] 完整版的虚拟设备功能
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs | 343 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 343 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
index a650b64..bc94bb7 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
@@ -126,5 +126,348 @@
}
#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 鈻� 绐楀笜_______________________________
+ /// <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>
+ private 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 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