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/HdlGatewayReceiveLogic.cs | 194 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 188 insertions(+), 6 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
index 71bc66b..b912a16 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
@@ -251,6 +251,51 @@
}
#endregion
+ #region 鈻� 鐢甸噺鎺ㄩ��
+ //鐢甸噺鎺ㄩ��
+ if (report.DeviceStatusReport.CluterID == 1)
+ {
+ foreach (var attData in report.DeviceStatusReport.AttriBute)
+ {
+ //鐢甸噺
+ if (attData.AttributeId == 33)
+ {
+ string receiptData = string.Empty;
+ //涓や釜涓や釜浣嶇疆鏇挎崲
+ for (int i = attData.AttriButeDataHex.Length - 1; i >= 0; i = i - 2)
+ {
+ receiptData += attData.AttriButeDataHex[i - 1].ToString() + attData.AttriButeDataHex[i].ToString();
+ }
+ int batteryValue = Convert.ToInt32(receiptData, 16);
+ //浣庝簬20%,鍒欎唬琛ㄧ數閲忎綆
+ locadevice.IsBatteryDown = batteryValue < 20;
+ }
+ //宸茬粡鎺ユ敹鍒扮姸鎬�
+ locadevice.HadReadDeviceStatu = true;
+ }
+ }
+
+ #endregion
+
+ #region 鈻� 铚傞福鍣ㄦ帹閫�
+ //铚傞福鍣ㄦ暟鎹�
+ else if (report.DeviceStatusReport.CluterID == 1282)
+ {
+ //mini澶滅伅
+ if (Common.LocalDevice.Current.IsMiniLight(locadevice) == true)
+ {
+ foreach (var attData in report.DeviceStatusReport.AttriBute)
+ {
+ if (attData.AttributeId == 0)
+ {
+ //杩欎釜鏄姤璀︽寔缁椂闂�(澶т簬2绉掓椂,鏍囪涓鸿繕鍦ㄥ搷鐫�)
+ ((ColorTemperatureLight)locadevice).IsBuzzerRing = attData.AttriButeData > 2 ? true : false;
+ }
+ }
+ }
+ }
+ #endregion
+
#region 鈻� 绐楀笜鏁版嵁
//绐楀笜鏁版嵁
else if (report.DeviceStatusReport.CluterID == 258)
@@ -420,6 +465,12 @@
}
//宸茬粡鎺ユ敹鍒扮姸鎬�
locadevice.HadReadDeviceStatu = true;
+
+ //if (locadevice is LightBase)
+ //{
+ // //褰撴帴鏀跺埌浜害鍊兼椂,榛樿鎵撳紑
+ // ((LightBase)locadevice).OnOffStatus = 1;
+ //}
}
}
#endregion
@@ -491,7 +542,7 @@
//娓╁害浼犳劅鍣�
if (locadevice is TemperatureSensor)
{
- ((TemperatureSensor)locadevice).Temperatrue = temperatrue;
+ ((TemperatureSensor)locadevice).currentTemperature = temperatrue;
}
//PM2.5浼犳劅鍣�
else if (locadevice is PMSensor)
@@ -500,6 +551,8 @@
}
//宸茬粡鎺ユ敹鍒扮姸鎬�
locadevice.HadReadDeviceStatu = true;
+ //娓╁害鍊奸渶瑕佷繚瀛�
+ locadevice.ReSave();
}
}
}
@@ -540,21 +593,23 @@
//婀垮害浼犳劅鍣�
if (locadevice is TemperatureSensor)
{
- ((TemperatureSensor)locadevice).Humidity = humidity;
+ ((TemperatureSensor)locadevice).currentHumidity = humidity;
}
//鏂伴鐨勬箍搴︿紶鎰熷櫒
else if (locadevice is HumiditySensor)
{
- ((HumiditySensor)locadevice).Humidity = humidity;
+ ((HumiditySensor)locadevice).currentHumidity = humidity;
}
//PM2.5浼犳劅鍣�
else if (locadevice is PMSensor)
{
((PMSensor)locadevice).currentHumidity = (int)humidity;
}
+ //宸茬粡鎺ユ敹鍒扮姸鎬�
+ locadevice.HadReadDeviceStatu = true;
+ //婀垮害鍊奸渶瑕佷繚瀛�
+ locadevice.ReSave();
}
- //宸茬粡鎺ユ敹鍒扮姸鎬�
- locadevice.HadReadDeviceStatu = true;
}
}
#endregion
@@ -580,8 +635,135 @@
}
#endregion
- }
+ #region 鈻� 璁惧鍩虹淇℃伅
+
+ else if (report.DeviceStatusReport.CluterID == 0)
+ {
+ var listLocalDevice = Common.LocalDevice.Current.GetDevicesByMac(deviceAddr, false);
+ //灞炴�ч兘鏄竴鏍风殑
+ foreach (var myDevice in listLocalDevice)
+ {
+ //灞炴�ф槸鍚︽敼鍙�
+ bool attriButeChanged = false;
+ foreach (var data in report.DeviceStatusReport.AttriBute)
+ {
+ //鐢熶骇鍟嗗悕瀛�
+ if (data.AttributeId == 4 && data.AttriButeDataHex.Length > 2)
+ {
+ if (data.AttriButeDataHex.Length > 2)
+ {
+ var value = UserCenterLogic.TranslateHexadecimalIntoText(data.AttriButeDataHex.Substring(2));
+ if (myDevice.ManufacturerName != value)
+ {
+ //灞炴�у彉鏇翠簡
+ attriButeChanged = true;
+ }
+ myDevice.ManufacturerName = value;
+ }
+ }
+ //鍨嬪彿鐮�(涔熷彨妯″潡ID)
+ if (data.AttributeId == 5)
+ {
+ if (data.AttriButeDataHex.Length > 2)
+ {
+ var value = UserCenterLogic.TranslateHexadecimalIntoText(data.AttriButeDataHex.Substring(2));
+ if (myDevice.ModelIdentifier != value)
+ {
+ //灞炴�у彉鏇翠簡
+ attriButeChanged = true;
+ }
+ myDevice.ModelIdentifier = value;
+ }
+ }
+ //鐢熶骇鏃ユ湡
+ if (data.AttributeId == 6)
+ {
+ if (data.AttriButeDataHex.Length > 2)
+ {
+ var value = UserCenterLogic.TranslateHexadecimalIntoText(data.AttriButeDataHex.Substring(2));
+ if (myDevice.ProductionDate != value)
+ {
+ //灞炴�у彉鏇翠簡
+ attriButeChanged = true;
+ }
+ myDevice.ProductionDate = value;
+ }
+ }
+ //鐢垫簮
+ if (data.AttributeId == 7)
+ {
+ myDevice.PowerSource = data.AttriButeData;
+ }
+ //搴忓垪鍙�
+ if (data.AttributeId == 13)
+ {
+ if (data.AttriButeDataHex.Length > 2)
+ {
+ string value;
+ if (Common.LocalDevice.Current.IsHdlDevice(myDevice) == false)
+ {
+ //绗笁鏂硅澶�
+ value = data.AttriButeDataHex.Substring(2);
+ }
+ else
+ {
+ //娌充笢璁惧
+ value = UserCenterLogic.TranslateHexadecimalIntoText(data.AttriButeDataHex.Substring(2));
+ }
+ if (myDevice.SerialNumber != value)
+ {
+ //灞炴�у彉鏇翠簡
+ attriButeChanged = true;
+ }
+ myDevice.SerialNumber = value;
+ }
+ }
+ }
+ //濡傛灉灞炴�у彉鏇翠簡
+ if (attriButeChanged == true && myDevice.IsCustomizeImage == false)
+ {
+ //UI閲嶆柊鐢熸垚
+ myDevice.IconPath = string.Empty;
+ myDevice.ReSave();
+ }
+ }
+ }
+
+ #endregion
+ }
+ else if (deviceEpoint == 200)
+ {
+ var localOta = Common.LocalDevice.Current.GetOTADevice(deviceAddr);
+ if (localOta != null)
+ {
+ #region 鈻� 鍥轰欢鐗堟湰
+ //鍥轰欢鐗堟湰
+ if (report.DeviceStatusReport.CluterID == (int)Cluster_ID.Ota)
+ {
+ foreach (var data in report.DeviceStatusReport.AttriBute)
+ {
+ //闀滃儚鐗堟湰
+ if (data.AttributeId == (int)AttriButeId.ImgVersion)
+ {
+ localOta.ImgVersion = data.AttriButeData;
+ }
+ //纭欢鐗堟湰
+ if (data.AttributeId == (int)AttriButeId.mgHWversion)
+ {
+ localOta.HwVersion = data.AttriButeData;
+ }
+ //闀滃儚ID
+ if (data.AttributeId == (int)AttriButeId.ImgTypeId)
+ {
+ localOta.ImgTypeId = data.AttriButeData;
+ }
+ }
+ localOta.ReSave();
+ }
+ #endregion
+ }
+ }
this.DeviceReportPush(report, ReceiveComandDiv.A璁惧灞炴�т笂鎶�);
}
--
Gitblit v1.8.0