From 490696fba6c1f1318e088c439ee81d536126581b Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期一, 18 五月 2020 10:35:26 +0800
Subject: [PATCH] 优化门锁远程问题
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs | 113 ++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 92 insertions(+), 21 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
old mode 100755
new mode 100644
index 0e0fbce..3f81650
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
@@ -425,24 +425,51 @@
//娓╁害
if (attData.AttributeId == (int)AttriButeId.MeasuredValue)
{
- if (attData.AttriButeData == 0)
+ decimal temperatrue = 0;
+ string receiptData = string.Empty;
+ //涓や釜涓や釜浣嶇疆鏇挎崲
+ for (int i = attData.AttriButeDataHex.Length - 1; i >= 0; i = i - 2)
{
- ((TemperatureSensor)locadevice).Temperatrue = 0;
+ receiptData += attData.AttriButeDataHex[i - 1].ToString() + attData.AttriButeDataHex[i].ToString();
}
- else if (attData.AttriButeData > 32767)
- {
- //璐熸暟(鐗规畩澶勭悊)
- string strValue = (attData.AttriButeData - 65536).ToString();
- //灏忔暟鐐归渶瑕佷竴浣�
- strValue = strValue.Substring(0, strValue.Length - 1);
- ((TemperatureSensor)locadevice).Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
- }
- else
+ //鏈夌鍙�(浼氬嚭鐜拌礋鏁�)
+ if (attData.AttriButeDataType == 40 || attData.AttriButeDataType == 41)
{
//灏忔暟鐐归渶瑕佷竴浣�
- string strValue = attData.AttriButeData.ToString();
+ string strValue = Convert.ToInt16(receiptData, 16).ToString();
strValue = strValue.Substring(0, strValue.Length - 1);
- ((TemperatureSensor)locadevice).Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+ temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+ }
+ //鏃犵鍙�(涓嶄細鍑虹幇璐熸暟)
+ else if (attData.AttriButeDataType == 32 || attData.AttriButeDataType == 33)
+ {
+ ushort shortData = Convert.ToUInt16(receiptData, 16);
+ if (shortData > 32767)
+ {
+ //璐熸暟(鐗规畩澶勭悊)
+ string strValue = (shortData - 65536).ToString();
+ //灏忔暟鐐归渶瑕佷竴浣�
+ strValue = strValue.Substring(0, strValue.Length - 1);
+ temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+ }
+ else
+ {
+ //灏忔暟鐐归渶瑕佷竴浣�
+ string strValue = shortData.ToString();
+ strValue = strValue.Substring(0, strValue.Length - 1);
+ temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+ }
+ }
+
+ //娓╁害浼犳劅鍣�
+ if (locadevice is TemperatureSensor)
+ {
+ ((TemperatureSensor)locadevice).Temperatrue = temperatrue;
+ }
+ //PM2.5浼犳劅鍣�
+ else if (locadevice is PMSensor)
+ {
+ ((PMSensor)locadevice).currentTemperature = (int)temperatrue;
}
//宸茬粡鎺ユ敹鍒扮姸鎬�
locadevice.HadReadDeviceStatu = true;
@@ -460,22 +487,66 @@
//婀垮害
if (attData.AttributeId == (int)AttriButeId.MeasuredValue)
{
- if (attData.AttriButeData == 0)
+ decimal humidity = 0;
+ string receiptData = string.Empty;
+ //涓や釜涓や釜浣嶇疆鏇挎崲
+ for (int i = attData.AttriButeDataHex.Length - 1; i >= 0; i = i - 2)
{
- ((TemperatureSensor)locadevice).Humidity = 0;
+ receiptData += attData.AttriButeDataHex[i - 1].ToString() + attData.AttriButeDataHex[i].ToString();
}
- else
+ //鏈夌鍙�(浼氬嚭鐜拌礋鏁�)
+ if (attData.AttriButeDataType == 40 || attData.AttriButeDataType == 41)
{
- //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
- string strValue = attData.AttriButeData.ToString();
+ //灏忔暟鐐归渶瑕佷竴浣�
+ string strValue = Convert.ToInt16(receiptData, 16).ToString();
strValue = strValue.Substring(0, strValue.Length - 1);
- ((TemperatureSensor)locadevice).Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+ humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+ }
+ //鏃犵鍙�(涓嶄細鍑虹幇璐熸暟)
+ else if (attData.AttriButeDataType == 32 || attData.AttriButeDataType == 33)
+ {
+ //灏忔暟鐐归渶瑕佷竴浣� 婀垮害涓嶄細鍑虹幇璐熸暟
+ string strValue = Convert.ToUInt16(receiptData, 16).ToString();
+ strValue = strValue.Substring(0, strValue.Length - 1);
+ humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+ }
+ //娓╁害浼犳劅鍣�
+ if (locadevice is TemperatureSensor)
+ {
+ ((TemperatureSensor)locadevice).Humidity = humidity;
+ }
+ //PM2.5浼犳劅鍣�
+ else if (locadevice is PMSensor)
+ {
+ ((PMSensor)locadevice).currentHumidity = (int)humidity;
}
}
//宸茬粡鎺ユ敹鍒扮姸鎬�
locadevice.HadReadDeviceStatu = true;
}
- }
+ }
+ #endregion
+
+ #region 鈻� PM2.5鏁版嵁
+ //PM2.5鏁版嵁
+ else if (report.DeviceStatusReport.CluterID == 1066)
+ {
+ foreach (var attData in report.DeviceStatusReport.AttriBute)
+ {
+ //PM2.5
+ if (attData.AttributeId == (int)AttriButeId.MeasuredValue)
+ {
+
+ if (attData.AttriButeDataType == 57)
+ {
+ ((PMSensor)locadevice).currentPmData = attData.AttriButeData;
+ }
+ }
+ //宸茬粡鎺ユ敹鍒扮姸鎬�
+ locadevice.HadReadDeviceStatu = true;
+ }
+ }
+
#endregion
}
@@ -571,7 +642,7 @@
/// 璁惧鍦ㄧ嚎鐘舵�佹洿鏂板弽棣�
/// </summary>
/// <param name="receiveData"></param>
- private void DeviceOnlineChangePush (JObject receiveData)
+ private void DeviceOnlineChangePush(JObject receiveData)
{
if (this.dicDeviceEvent.Count == 0)
{
--
Gitblit v1.8.0