From ccdff82fac4bcc1067ec806ade5ae897f1214f4d Mon Sep 17 00:00:00 2001 From: wei <kaede@kaededeMacBook-Air.local> Date: 星期四, 01 四月 2021 14:41:53 +0800 Subject: [PATCH] 异常捕获 --- HDL_ON/DAL/Mqtt/MqttClient.cs | 150 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 138 insertions(+), 12 deletions(-) diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs index df7c4a8..13fbff6 100644 --- a/HDL_ON/DAL/Mqtt/MqttClient.cs +++ b/HDL_ON/DAL/Mqtt/MqttClient.cs @@ -11,6 +11,7 @@ using HDL_ON.DriverLayer; using HDL_ON.Entity; using HDL_ON.UI; +using HDL_ON.DAL.Server; namespace HDL_ON.DAL.Mqtt { @@ -191,15 +192,45 @@ Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/property/send", QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce }; - //璁惧鍏ョ綉涓婃姤涓婚(鐩墠鍙湁绾㈠瀹�) - var topicFilterPush3 = new MqttTopicFilter() + //App璁㈤槄绾㈠瀹� / 缃戝叧閬ユ帶鍣ㄦ坊鍔犳垚鍔熼�氱煡 + var pirStatus = new MqttTopicFilter() { Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/topo/found", QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce }; + //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡 + var pirStudy = new MqttTopicFilter() + { + Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/irCodeStudyDone/up", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰� + //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡 + var appHomeRefresh = new MqttTopicFilter() + { + Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appHomeRefresh/up", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + //appRoomRefresh锛氭埧闂存暟鎹埛鏂伴�氱煡 + var appRoomRefresh = new MqttTopicFilter() + { + Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appRoomRefresh/up", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + //appDeviceRefresh锛氳澶囨暟鎹埛鏂伴�氱煡 + var appDeviceRefresh = new MqttTopicFilter() + { + Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appDeviceRefresh/up", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + #endregion + Utlis.WriteLine("寮�濮嬭闃咃紒"); - var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterPush2, topicAlinkStatus, topicFilterPush3 }); + var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { + pirStatus,pirStudy, + appDeviceRefresh,appHomeRefresh,appRoomRefresh, + topicFilterPush2, topicAlinkStatus }); if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0) { isSubscribeSuccess = true; @@ -227,6 +258,10 @@ { return; } + if (DB_ResidenceData.Instance.CurrentRegion == null || DB_ResidenceData.Instance.CurrentRegion.RegionID == null) + { + return; + } //杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺 if (RemoteMqttIsConnecting || remoteIsConnected) @@ -236,7 +271,7 @@ Utlis.WriteLine($"StartCloudMqtt: 寮�濮�"); - await Task.Factory.StartNew(async () => { + await Task.Factory.StartNew((Func<Task>)(async () => { try { #region 鍒濆鍖栬繙绋婱qtt @@ -248,11 +283,11 @@ if (RemoteMqttClient.ApplicationMessageReceivedHandler == null) { //澶勭悊鎺ユ敹鍒扮殑鏁版嵁 - RemoteMqttClient.UseApplicationMessageReceivedHandler((e) => { + RemoteMqttClient.UseApplicationMessageReceivedHandler((Action<MqttApplicationMessageReceivedEventArgs>)((e) => { try { var topic = e.ApplicationMessage.Topic; - MainPage.Log($"鏀跺埌mqtt涓婚:{topic}"); + //MainPage.Log($"鏀跺埌mqtt涓婚:{topic}"); //涓�绔彛涓婚澶勭悊 if (DB_ResidenceData.Instance.GatewayType == 0 && !DB_ResidenceData.Instance.CheckWhetherGatewayIdIsNull()) { @@ -290,12 +325,103 @@ //鏂版尋涓嬬嚎涓婚鏂规 鏀跺埌鎸や笅绾夸富棰� ReceiveNotifySqueezeAsync(mMes); } + //App璁㈤槄绾㈠瀹�/缃戝叧閬ユ帶鍣ㄦ坊鍔犳垚鍔熼�氱煡 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/topo/found") + { + var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey); + var revString = Encoding.UTF8.GetString(bytes); + HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString; + } + //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/irCodeStudyDone/up") + { + var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey); + var revString = Encoding.UTF8.GetString(bytes); + UI.UI2.PersonalCenter.PirDevice.Method.buttondata = revString; + } + #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰� + //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appHomeRefresh/up") + { + MainPage.Log("浣忓畢鏁版嵁鍒锋柊閫氱煡"); + new HttpServerRequest().GetHomePager(); + } + //appRoomRefresh锛氭埧闂存暟鎹埛鏂伴�氱煡 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appRoomRefresh/up") + { + MainPage.Log("鎴块棿鏁版嵁鍒锋柊閫氱煡"); + var roomResult = new HttpServerRequest().GetRoomList(); + if (roomResult.Code == StateCode.SUCCESS) + { + MainPage.Log($"璇诲彇鎴块棿淇℃伅鎴愬姛"); + var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<SpatialApiPack>(roomResult.Data.ToString()); + if (revData == null) + { + revData = new SpatialApiPack(); + } + { + SpatialInfo.CurrentSpatial.UpdateSpatialList(revData.list); + } + } + else + { + MainPage.Log($"璇诲彇鎴块棿鏁版嵁澶辫触:Code:{roomResult.Code}; msg:{roomResult.message}"); + } + } + //appDeviceRefresh锛氳澶囨暟鎹埛鏂伴�氱煡 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appDeviceRefresh/up") + { + MainPage.Log("璁惧鏁版嵁鍒锋柊閫氱煡"); + var deviceResult = new HttpServerRequest().GetDeviceList(); + if (deviceResult.Code == StateCode.SUCCESS) + { + MainPage.Log($"璇诲彇璁惧淇℃伅鎴愬姛"); + var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString()); + if (deviceList == null) + { + deviceList = new DevcieApiPack(); + } + string delFile = ""; + if (FunctionList.List.GetDeviceFunctionList().Count > 0) + { + for (int i = 0; i < FunctionList.List.GetDeviceFunctionList().Count;) + { + var localFunction = FunctionList.List.GetDeviceFunctionList()[i]; + if (localFunction.Spk_Prefix == FunctionCategory.Music || string.IsNullOrEmpty(localFunction.Spk_Prefix)) + { + i++; + continue; + } + var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId); + + if (delFile == localFunction.savePath) + { + i++; + continue; + } + delFile = localFunction.savePath; + FunctionList.List.DeleteFunction(localFunction); + } + } + //澶勭悊鍓╀笅鐨勬柊澧炲姛鑳� + foreach (var newFunction in deviceList.list) + { + newFunction.SaveFunctionFile(); + FunctionList.List.IniFunctionList(newFunction.savePath); + } + } + else + { + MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁澶辫触:Code:{deviceResult.Code}; Msg:{deviceResult.message}"); + } + } + #endregion //A缃戝叧璁惧鐘舵��-鍖呭惈娑傞甫璁惧 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/property/send") { var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey); var revString = Encoding.UTF8.GetString(bytes); - Control.Ins.UpdataFunctionStatus(revString, null,true); + Control.Ins.UpdataFunctionStatus(revString, null, true); } //涓�绔彛鏁版嵁瑙f瀽 else @@ -317,7 +443,7 @@ } } catch { } - }); + })); } //(2)DisconnectedHandler @@ -368,7 +494,7 @@ Utlis.WriteLine($"StartCloudMqtt: 缁撴潫"); } - }); + })); } @@ -455,7 +581,7 @@ MqttInfoConfig.Current.Save(); - + mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey; //瑙e瘑瀵嗛挜瑙勫垯锛氬凡鐜版湁鐨勪綇瀹匢D涓哄熀鍑�,浠庡彸杈逛竴涓�鑾峰彇鍊�,鏈�鍚庡鏋滀笉澶�16浣�,鍒欏線鍙宠ˉ闆� string aesKey = string.Empty; @@ -543,7 +669,7 @@ /// </summary> static void ReceiveNotifySqueezeAsync(string mMes) { - if (mMes == PushSignStr ) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊//鎴栬�呭綋鍓嶄笉鏄繙绋嬮摼鎺ョ姸鎬� + if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊//鎴栬�呭綋鍓嶄笉鏄繙绋嬮摼鎺ョ姸鎬� //娴嬭瘯璐﹀彿锛屼笉鎸や笅绾� switch (UserInfo.Current.AccountString) { @@ -861,4 +987,4 @@ } -} +} \ No newline at end of file -- Gitblit v1.8.0