From 5da99fed2eb0d08b6338064da5f998891252c7b8 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期一, 18 五月 2020 16:39:59 +0800
Subject: [PATCH] 2020-05-18-2
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs | 198 ++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 168 insertions(+), 30 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 4cab21b..40ab0de
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
@@ -93,10 +93,36 @@
});
return;
}
- else if (topic == "ZigbeeGateWayToClient/" + Common.Config.Instance.Guid + "/Push/Deleted"
- || topic == "ZigbeeGateWayToClient/" + Common.Config.Instance.Guid + "/Push/DeletedShareData")
+ else if (topic == "ZigbeeGateWayToClient/" + Common.Config.Instance.Home.Id + "_" + Common.Config.Instance.Guid + "/PrimaryUserDelYou")
{
- if (UserCenterResourse.UserInfo.AuthorityNo == 3)
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //鍒嗕韩浣忓畢宸叉洿鏀癸紝璇疯仈绯荤鐞嗗憳锛�
+ string msg = Language.StringByID(R.MyInternationalizationString.uShardResidenceHadDeletePleaseTakeToAdmin);
+ var contr = new ShowMsgControl(ShowMsgType.Tip, msg);
+ contr.Show();
+
+ UserCenterLogic.ReLoginAgain(UserCenterResourse.UserInfo.Account, false);
+ });
+ return;
+ }
+ else if (topic == "ZigbeeGateWayToClient/" + Common.Config.Instance.Guid + "/Push/Update")
+ {
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //鎮ㄧ殑鏉冮檺宸茬粡鍙樻洿,璇烽噸鏂扮櫥闄�
+ string msg = Language.StringByID(R.MyInternationalizationString.uYouAccessHadChangedPleaseTakeToAdmin);
+ var contr = new ShowMsgControl(ShowMsgType.Tip, msg);
+ contr.Show();
+
+ UserCenterLogic.ReLoginAgain(UserCenterResourse.UserInfo.Account, false);
+ });
+ return;
+ }
+ else if (UserCenterResourse.UserInfo.AuthorityNo == 3)
+ {
+ if (topic == "ZigbeeGateWayToClient/" + Common.Config.Instance.Guid + "/Push/Deleted"
+ || topic == "ZigbeeGateWayToClient/" + Common.Config.Instance.Guid + "/Push/DeletedShareData")
{
HdlThreadLogic.Current.RunMain(() =>
{
@@ -107,9 +133,10 @@
UserCenterLogic.ReLoginAgain(UserCenterResourse.UserInfo.Account, false);
});
+ return;
}
- return;
}
+
try
{
if (HdlGatewayLogic.Current.IsGatewayExist(gatewayId) == false)
@@ -131,7 +158,7 @@
//闂ㄩ攣涓婃姤
else if (topic == gatewayId + "/Alarms/SendAlarmInform")
{
- this.DoorLockDeviceReportPush(null);
+ this.DoorLockDeviceReportPush(JObject.Parse(msgData));
}
//閫氳繃澶栭儴鏂瑰紡甯冮槻鎾ら槻鎴愬姛鏃舵姤鍛�
else if (topic == gatewayId + "/Security/EnOrWithdrawSucceedReport")
@@ -161,7 +188,7 @@
//閫昏緫瑙﹀彂涓婃姤
else if (topic == gatewayId + "/Logic/Execute_Respon")
{
- this.LogicExecutePush(null);
+ this.LogicExecutePush(JObject.Parse(msgData));
}
//鍦烘櫙瑙﹀彂涓婃姤
else if (topic == gatewayId + "/Scene/Exec_Respon")
@@ -247,7 +274,7 @@
}
#endregion
- #region 鈻� 绌鸿皟鏁版嵁
+ #region 鈻� 绌鸿皟鍜屾柊椋庢暟鎹�
//绌鸿皟鏁版嵁
else if (report.DeviceStatusReport.CluterID == 513)
{
@@ -290,6 +317,24 @@
//宸茬粡鎺ユ敹鍒扮姸鎬�
locadevice.HadReadDeviceStatu = true;
}
+ else if (attData.AttributeId == 4097)
+ {
+ //杩囪檻缃戞竻娲楁爣蹇�:42
+ ((AC)locadevice).CleanStatu = attData.AttriButeData == 42;
+ }
+ else if (attData.AttributeId == 4099)
+ {
+ //杞崲涓轰簩杩涘埗
+ var value = Convert.ToString(attData.AttriButeData, 2).PadLeft(16, '0');
+ //杩欎簲涓缃槸鏀惧湪鍚庨潰鐨�
+ value = value.Substring(value.Length - 5, 5);
+ for (int i = 0; i < value.Length; i++)
+ {
+ //鑷畾涔夌殑绌鸿皟妯″紡
+ ((AC)locadevice).listSupportMode[i] = Convert.ToInt32(value[i].ToString());
+ }
+ locadevice.ReSave();
+ }
}
}
//绌鸿皟鏁版嵁
@@ -298,19 +343,59 @@
locadevice.DeviceStatusReport = report.DeviceStatusReport;
foreach (var attData in report.DeviceStatusReport.AttriBute)
{
- if (attData.AttributeId == 0)
+ //鍖哄垎鏄┖璋冭繕鏄柊椋�
+ var device = Shared.Common.LocalDevice.Current.GetDevice(report.DeviceAddr, report.DeviceEpoint);
+
+ if (device.Type == DeviceType.FreshAir)
{
- //椋庢墖妯″紡
- ((AC)locadevice).currentFanMode = attData.AttriButeData;
- //宸茬粡鎺ユ敹鍒扮姸鎬�
- locadevice.HadReadDeviceStatu = true;
+ if (attData.AttributeId == 0)
+ {
+ switch (attData.AttriButeData)
+ {
+ case 0:
+ case 4:
+ ((FreshAir)locadevice).currentFanStatus = attData.AttriButeData;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ ((FreshAir)locadevice).currentFanSpeed = attData.AttriButeData;
+ break;
+ case 5:
+ case 15:
+ ((FreshAir)locadevice).currentFanMode = attData.AttriButeData;
+ break;
+ }
+ //宸茬粡鎺ユ敹鍒扮姸鎬�
+ locadevice.HadReadDeviceStatu = true;
+ }
}
- else if (attData.AttributeId == 4096)
+ else
{
- //椋庢墖鎵
- ((AC)locadevice).currentFanSwingMode = attData.AttriButeData;
- //宸茬粡鎺ユ敹鍒扮姸鎬�
- locadevice.HadReadDeviceStatu = true;
+ if (attData.AttributeId == 0)
+ {
+ //椋庢墖妯″紡
+ ((AC)locadevice).currentFanMode = attData.AttriButeData;
+ //宸茬粡鎺ユ敹鍒扮姸鎬�
+ locadevice.HadReadDeviceStatu = true;
+ }
+ else if (attData.AttributeId == 4096)
+ {
+ //椋庢墖鎵
+ ((AC)locadevice).currentFanSwingMode = attData.AttriButeData;
+ //宸茬粡鎺ユ敹鍒扮姸鎬�
+ locadevice.HadReadDeviceStatu = true;
+ }
+ else if (attData.AttributeId == 4097)
+ {
+ //杞崲涓轰簩杩涘埗
+ var value = Convert.ToString(attData.AttriButeData, 2).PadLeft(16, '0');
+ //杩欎釜璁剧疆鏄斁鍦ㄥ悗闈㈢殑
+ value = value.Substring(value.Length - 1, 1);
+ //鍚敤鎽嗛鍔熻兘
+ ((AC)locadevice).UseSwingFunction = value == "1";
+ locadevice.ReSave();
+ }
}
}
}
@@ -321,7 +406,7 @@
else if (report.DeviceStatusReport.CluterID == 8)
{
locadevice.DeviceStatusReport = report.DeviceStatusReport;
- if (report.DeviceStatusReport.AttriBute[0].AttributeId == 0)
+ if (locadevice.Type == DeviceType.DimmableLight && report.DeviceStatusReport.AttriBute[0].AttributeId == 0)
{
//姝ゅ睘鎬ц〃鏄庡綋鍓嶄寒搴︾▼搴�
((DimmableLight)locadevice).Level = report.DeviceStatusReport.AttriBute[0].AttriButeData;
@@ -422,6 +507,8 @@
if (locadevice != null)
{
((IASZone)locadevice).iASInfo = ias.iASInfo;
+ //濡傛灉鎺ユ敹鍒颁笂鎶�,鍗宠鏄庤繖涓紶鎰熷櫒鏄湪绾跨殑
+ locadevice.IsOnline = 1;
//璁板綍鍥炲鏃堕棿
locadevice.LastDateTime = DateTime.Now;
}
@@ -442,9 +529,36 @@
/// <param name="receiveData"></param>
private void DoorLockDeviceReportPush(JObject receiveData)
{
- //淇濆瓨闂ㄩ攣淇℃伅鍒版湰鍦�
- //HdlAlarmsLogic.Current.SaveDoorLockAlarmInfo(receiveData);
-
+ //鍙湁寰愭鐨勯棬閿佺晫闈㈡病鏈夋墦寮�鐨勬儏鍐典笅,鎵嶄細澶勭悊杩欎釜涓滆タ
+ if (ControlCommonResourse.IsDoorLockPageOpen == false && UserCenterResourse.UserInfo.AuthorityNo == 1)
+ {
+ var device = Common.LocalDevice.Current.GetDevice(receiveData.Value<string>("DeviceAddr"), receiveData.Value<int>("Epoint"));
+ if (device.Type != DeviceType.DoorLock)
+ {
+ //瀹冧笉鏄棬閿�
+ return;
+ }
+ var info = Newtonsoft.Json.JsonConvert.DeserializeObject<DoorLockAlarmsResult>(receiveData["Data"].ToString());
+ if (info.Clusterid == 257)
+ {
+ //甯稿紑妯″紡鍏抽棴
+ if (info.AlarmCode == 217 || info.AlarmCode == 219)
+ {
+ HdlThreadLogic.Current.RunThread(async () =>
+ {
+ //娓╁眳鍩庣殑瑕佺綉鍏充腑鏄惁鏈夐�昏緫瀛樺湪
+ //鍙傛暟:2-甯稿紑鑷姩鍖�;3-澶辨晥鏃堕棿鑷姩鍖�
+ var result = await Shared.Phone.Device.Logic.SkipView.Exist(2, (ZigBee.Device.DoorLock)device);
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //寮瑰嚭寰愭鐨勯偅涓獥鍙�
+ DoorLock.DoorLockCommonInfo.NomallyOpenModeInvalidDialog((ZigBee.Device.DoorLock)device, DoorLock.DoorLockCommonInfo.DoorLockMessType.ServicePush,
+ result != 0 ? true : false, null);
+ });
+ });
+ }
+ }
+ }
//鏄剧ず鏈夋柊娑堟伅鐨勭壒鏁�
this.ShowHadNewMessageAppeal();
}
@@ -634,10 +748,30 @@
/// <param name="receiveData"></param>
private void LogicExecutePush(JObject receiveData)
{
- //鐩墠涓嶅鐞嗛�昏緫涓婃姤鍐呭
-
//鏄剧ず鏈夋柊娑堟伅鐨勭壒鏁�
this.ShowHadNewMessageAppeal();
+
+ //杩欎釜涓滆タ鏆傛椂涓嶅鐞�
+ ////鍙湁寰愭鐨勯棬閿佺晫闈㈡病鏈夋墦寮�鐨勬儏鍐典笅,鎵嶄細澶勭悊杩欎釜涓滆タ
+ //if (ControlCommonResourse.IsDoorLockPageOpen == false && UserCenterResourse.UserInfo.AuthorityNo == 1)
+ //{
+ // var device = Common.LocalDevice.Current.GetDevice(receiveData.Value<string>("DeviceAddr"), receiveData.Value<int>("Epoint"));
+ // if (device.Type != DeviceType.DoorLock)
+ // {
+ // return;
+ // }
+ // //鑷姩鍖栨墽琛� 甯稿紑鍏抽棴
+ // var data = Newtonsoft.Json.JsonConvert.DeserializeObject<LogicPushResult>(receiveData["Data"].ToString());
+ // if (data.ActionData != null && data.ActionData.Actiontype == 8
+ // && data.ActionData.PassDataString == "055704010113")
+ // {
+ // HdlThreadLogic.Current.RunMain(() =>
+ // {
+ // //寮瑰嚭寰愭鐨勯偅涓獥鍙�
+ // DoorLock.DoorLockCommonInfo.NomallyOpenModeInvalidDialog((ZigBee.Device.DoorLock)device, DoorLock.DoorLockCommonInfo.DoorLockMessType.ServicePush, null);
+ // });
+ // }
+ //}
}
#endregion
@@ -744,19 +878,23 @@
//娌℃湁娣诲姞鐩戝惉
return;
}
- lock (this.dicDeviceEvent)
+ //lock (this.dicDeviceEvent)
{
var list = new List<Action<CommonDevice>>();
- foreach (string keys in this.dicDeviceEvent.Keys)
+ try
{
- if (this.dicCommandDiv[keys] != comand)
+ foreach (string keys in this.dicDeviceEvent.Keys)
{
- //鍛戒护鍖哄垎涓嶄竴鑷达紝鍒欎笉璋冪敤鍥炶皟鍑芥暟
- continue;
+ if (this.dicCommandDiv[keys] != comand)
+ {
+ //鍛戒护鍖哄垎涓嶄竴鑷达紝鍒欎笉璋冪敤鍥炶皟鍑芥暟
+ continue;
+ }
+ //鍛戒护鍖哄垎涓�鑷存椂锛屽垯璋冪敤鍥炶皟鍑芥暟
+ list.Add(this.dicDeviceEvent[keys]);
}
- //鍛戒护鍖哄垎涓�鑷存椂锛屽垯璋冪敤鍥炶皟鍑芥暟
- list.Add(this.dicDeviceEvent[keys]);
}
+ catch { return; }
//鏈夊彲鑳藉湪鍥炶皟鍑芥暟涓Щ闄や簡浜嬩欢锛屽鑷存姤閿欙紝鎵�浠ュ厛鏀堕泦锛屽啀璋冪敤
foreach (var action in list)
{
--
Gitblit v1.8.0