From 8ce0f9b1e568dd9125e74421cd02fbc29381c1f1 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期三, 29 七月 2020 12:53:33 +0800
Subject: [PATCH] 新版本
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs | 101 +++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 91 insertions(+), 10 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
index 2e8ec34..ea1c159 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)
@@ -406,10 +451,37 @@
else if (report.DeviceStatusReport.CluterID == 8)
{
locadevice.DeviceStatusReport = report.DeviceStatusReport;
- if (locadevice.Type == DeviceType.DimmableLight && report.DeviceStatusReport.AttriBute[0].AttributeId == 0)
+ if (report.DeviceStatusReport.AttriBute[0].AttributeId == 0)
{
- //姝ゅ睘鎬ц〃鏄庡綋鍓嶄寒搴︾▼搴�
- ((DimmableLight)locadevice).Level = report.DeviceStatusReport.AttriBute[0].AttriButeData;
+ if (locadevice.Type == DeviceType.DimmableLight)
+ {
+ //姝ゅ睘鎬ц〃鏄庡綋鍓嶄寒搴︾▼搴�
+ ((DimmableLight)locadevice).Level = report.DeviceStatusReport.AttriBute[0].AttriButeData;
+ }
+ else if (locadevice.Type == DeviceType.ColorTemperatureLight)
+ {
+ //姝ゅ睘鎬ц〃鏄庡綋鍓嶄寒搴︾▼搴�
+ ((ColorTemperatureLight)locadevice).Level = report.DeviceStatusReport.AttriBute[0].AttriButeData;
+ }
+ //宸茬粡鎺ユ敹鍒扮姸鎬�
+ locadevice.HadReadDeviceStatu = true;
+ }
+ }
+ #endregion
+
+ #region 鈻� 鑹叉俯鏁版嵁
+ //鑹叉俯鏁版嵁
+ else if (report.DeviceStatusReport.CluterID == 768)
+ {
+ locadevice.DeviceStatusReport = report.DeviceStatusReport;
+ if (report.DeviceStatusReport.AttriBute[0].AttributeId == 0)
+ {
+ if (locadevice.Type == DeviceType.ColorTemperatureLight)
+ {
+ //姝ゅ睘鎬ц〃鏄庡綋鍓嶈壊娓�
+ int value = report.DeviceStatusReport.AttriBute[0].AttriButeData != 0 ? 1000000 / report.DeviceStatusReport.AttriBute[0].AttriButeData : 0;
+ ((ColorTemperatureLight)locadevice).ColorTemperature = value;
+ }
//宸茬粡鎺ユ敹鍒扮姸鎬�
locadevice.HadReadDeviceStatu = true;
}
@@ -510,10 +582,15 @@
strValue = strValue.Substring(0, strValue.Length - 1);
humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
}
- //娓╁害浼犳劅鍣�
+ //婀垮害浼犳劅鍣�
if (locadevice is TemperatureSensor)
{
((TemperatureSensor)locadevice).Humidity = humidity;
+ }
+ //鏂伴鐨勬箍搴︿紶鎰熷櫒
+ else if (locadevice is HumiditySensor)
+ {
+ ((HumiditySensor)locadevice).Humidity = humidity;
}
//PM2.5浼犳劅鍣�
else if (locadevice is PMSensor)
@@ -612,7 +689,7 @@
var info = Newtonsoft.Json.JsonConvert.DeserializeObject<DoorLockAlarmsResult>(receiveData["Data"].ToString());
if (info.Clusterid == 257)
{
- //216锛氶攣涓婅缃殑甯稿紑
+ //216锛氶攣涓婅缃殑甯稿紑
if (info.AlarmCode == 216)
{
HdlThreadLogic.Current.RunMain(() =>
@@ -620,7 +697,7 @@
//鏇存柊闂ㄩ攣娑夊強鐨勫父寮�/甯稿叧鐨勭晫闈�
if (UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction != null)
{
- UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction(device.DeviceAddr + device.DeviceEpoint, true);
+ UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction(device.DeviceAddr, true);
}
});
}
@@ -840,12 +917,16 @@
HdlThreadLogic.Current.RunThread(async () =>
{
- var result = await Shared.Phone.Device.Logic.SkipView.Exist(3, (ZigBee.Device.DoorLock)device[0]);
HdlThreadLogic.Current.RunMain(() =>
{
- //寮瑰嚭寰愭鐨勯偅涓獥鍙�
- DoorLock.DoorLockCommonInfo.NomallyOpenModeInvalidDialog((ZigBee.Device.DoorLock)device[0], DoorLock.DoorLockCommonInfo.DoorLockMessType.ServicePush,
- result != 0 ? true : false, ControlCommonResourse.UpdateDoorLockStatusAction);
+ //鎻愮ず闂ㄩ攣宸茬粡澶辨晥
+ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.NormallyClosed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+
+ //鏇存柊闂ㄩ攣娑夊強鐨勫父寮�/甯稿叧鐨勭晫闈�
+ if (UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction != null)
+ {
+ UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction(deviceAddr, false);
+ }
});
});
}
--
Gitblit v1.8.0