From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期三, 01 十二月 2021 16:32:57 +0800 Subject: [PATCH] 2021-12-01-01 --- HDL_ON/DAL/Mqtt/MqttClient.cs | 536 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 372 insertions(+), 164 deletions(-) diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs index 8b725d6..b638339 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 { @@ -19,7 +20,8 @@ /// <summary> /// 鍔犲瘑閫氳KEY /// </summary> - static string mqttEncryptKey = ""; + //static string mqttEncryptKey = ""; + static string tuyaEncryptKey = ""; //static string checkGatewayTopicBase64 = ""; static bool hadGateway = true; /// <summary> @@ -56,37 +58,32 @@ /// </summary> static string PushSignStr = DateTime.Now.Ticks.ToString(); - /// <summary> - /// 鏂紑杩滅▼Mqtt鐨勯摼鎺� + /// <summary> + /// 鏂紑杩滅▼Mqtt鐨勯摼鎺� /// </summary> - static async Task DisConnectRemoteMqttClient(string s = "") - { + static async Task DisConnectRemoteMqttClient(string s = "") + { try - { + { if (remoteIsConnected) { remoteIsConnected = false; isSubscribeSuccess = false; - Utlis.WriteLine($"Remote涓诲姩鏂紑_{s}"); - //await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None); + Utlis.WriteLine($"Remote涓诲姩鏂紑_{s}"); + //await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None); await RemoteMqttClient.DisconnectAsync(); - - if (Control.Ins.IsRemote) - { - Control.Ins.GatewayOnline = false; - } - } + } } catch (Exception e) { - Utlis.WriteLine($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}"); - } + Utlis.WriteLine($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}"); + } } - /// <summary> - /// 鏂紑杩滅▼Mqtt鐨勯摼鎺� + /// <summary> + /// 鏂紑杩滅▼Mqtt鐨勯摼鎺� /// </summary> - static async Task DisConnectRemoteMqttClientWhenStart(string s = "") + static async Task DisConnectRemoteMqttClientWhenStart(string s = "") { try { @@ -97,7 +94,7 @@ } catch (Exception e) { - Utlis.WriteLine($"RemoteStart鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}"); + Utlis.WriteLine($"RemoteStart鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}"); } } @@ -136,10 +133,13 @@ { try { - System.Threading.Thread.Sleep(500); - if (!Control.Ins.IsRemote) continue; + System.Threading.Thread.Sleep(2000); //杩涘叆鍚庡彴涓嶅鐞� if (MainPage.IsEnterBackground) continue; + if (MqttInfoConfig.Current.HomeGatewayInfo == null) + { + continue; + } await StartCloudMqtt(); await SubscribeTopics(); @@ -170,44 +170,94 @@ { try { - //2020-05-14 璁㈤槄涓婚璐ㄩ噺鏀逛负0 - var topicFilterBusGateWayToClient = new MqttTopicFilter() + if (DB_ResidenceData.Instance.GatewayType == 0 && !DB_ResidenceData.Instance.CheckWhetherGatewayIdIsNull()) { - Topic = $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/#", - QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce - //QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce - }; - + Utlis.WriteLine("寮�濮嬭闃呬竴绔彛閫氱敤涓婚锛�"); + //2020-05-14 璁㈤槄涓婚璐ㄩ噺鏀逛负0 + var topicFilterBusGateWayToClient = new MqttTopicFilter() + { + Topic = $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/#", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + await RemoteMqttClient.SubscribeAsync(topicFilterBusGateWayToClient); + } + //鎸や笅绾夸富棰� var topicFilterPush2 = new MqttTopicFilter { Topic = $"/BusGateWayToClient/{UserInfo.Current.ID}/#", QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce, - //QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce }; - var topicAlinkStatus = new MqttTopicFilter() { - Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/app/thing/property/send", + Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/property/send", QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce }; - //var topicBusStatus = new MqttTopicFilter() - //{ - // Topic = $"/BusGateWayToClient/{}/Common", - // QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce - //}; + //App璁㈤槄绾㈠瀹� / 缃戝叧閬ユ帶鍣ㄦ坊鍔犳垚鍔熼�氱煡 + var pirStatus = new MqttTopicFilter() + { + Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/topo/found", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡 + var pirStudy = new MqttTopicFilter() + { + Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + + #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰� + //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡--鏉ㄦ稕 + var appHomeRefresh = new MqttTopicFilter() + { + Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appHomeRefresh/up", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + //浣忓畢娑堟伅鍙樻洿鎺ㄩ��--璞嗚眴 + var residenceChange = new MqttTopicFilter() + { + Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appDeviceRefresh/up", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + //appRoomRefresh锛氭埧闂存暟鎹埛鏂伴�氱煡 + var appRoomRefresh = new MqttTopicFilter() + { + Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appRoomRefresh/up", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + //appDeviceRefresh锛氳澶囨暟鎹埛鏂伴�氱煡 + var appDeviceRefresh = new MqttTopicFilter() + { + Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/app/thing/event/appHomeRefresh/up", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + //涓�绔彛瀵嗛挜鏇存柊閫氱煡 + var mqttkeyChange = new MqttTopicFilter() + { + Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/custom/mqtt/secret/change", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + + //瀹夐槻鐘舵�佸彉鍖� + var securityStatusChange = new MqttTopicFilter() + { + Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/custom/security/status/up", + QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce + }; + + + #endregion + Utlis.WriteLine("寮�濮嬭闃咃紒"); - var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterBusGateWayToClient, topicFilterPush2, topicAlinkStatus }); + var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { + pirStatus,pirStudy, + appDeviceRefresh,appHomeRefresh,appRoomRefresh,residenceChange, + topicFilterPush2, topicAlinkStatus ,mqttkeyChange, + securityStatusChange}); if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0) { - Control.Ins.GatewayOnline = true; isSubscribeSuccess = true; Utlis.WriteLine("璁㈤槄鎴愬姛锛�"); - - MqttRemoteSend(new byte[] { 0 }, 3); - - //杩炴帴鎴愬姛鍚庢娴嬫槸鍚﹂渶瑕侀�氳繃杩滅▼鑾峰彇Key - //CheckIfNeedGetLocalPasswordFromRemote(); } } catch (Exception ex) @@ -231,6 +281,10 @@ { return; } + if (DB_ResidenceData.Instance.CurrentRegion == null || DB_ResidenceData.Instance.CurrentRegion.id == null) + { + return; + } //杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺 if (RemoteMqttIsConnecting || remoteIsConnected) @@ -240,7 +294,7 @@ Utlis.WriteLine($"StartCloudMqtt: 寮�濮�"); - await Task.Factory.StartNew(async () => { + await Task.Factory.StartNew((Func<Task>)(async () => { try { #region 鍒濆鍖栬繙绋婱qtt @@ -252,70 +306,206 @@ if (RemoteMqttClient.ApplicationMessageReceivedHandler == null) { //澶勭悊鎺ユ敹鍒扮殑鏁版嵁 - RemoteMqttClient.UseApplicationMessageReceivedHandler((e) => { + RemoteMqttClient.UseApplicationMessageReceivedHandler((Action<MqttApplicationMessageReceivedEventArgs>)((e) => { try { var topic = e.ApplicationMessage.Topic; + //MainPage.Log($"鏀跺埌mqtt涓婚:{topic}"); + //涓�绔彛涓婚澶勭悊 + if (DB_ResidenceData.Instance.GatewayType == 0 && !DB_ResidenceData.Instance.CheckWhetherGatewayIdIsNull()) + { + if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/NotifyBusGateWayInfoChange") + { + //缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey + //鏀跺埌缃戝叧涓婄嚎娑堟伅涓婚 + ReceiveNotifyBusGateWayInfoChange(); + return; + } + else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/NotifyGateWayOffline") + { + //缃戝叧鎺夌嚎 + //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛� + ReceiveNotifyGateWayOffline(); + return; + } + else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/Common/CheckGateway") + { + var ss = Encoding.UTF8.GetString(e.ApplicationMessage.Payload); + //ReceiveCheckGateway(ss); + return; + } + } + + //涓�浜涚壒娈婄殑涓婚澶勭悊(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣� true:鎵ц浜嗙壒娈婂鐞� false:娌℃湁鎵ц鐗规畩澶勭悊) + Stan.HdlCloudReceiveLogic.Current.CloudOverallMsgReceiveEx(topic, e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey, tuyaEncryptKey); + if (topic == $"/BusGateWayToClient/{UserInfo.Current.ID}" + PushNotifySqueeze) { var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload); //鏂版尋涓嬬嚎涓婚鏂规 鏀跺埌鎸や笅绾夸富棰� ReceiveNotifySqueezeAsync(mMes); } - else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/NotifyBusGateWayInfoChange") - {//缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey - //鏀跺埌缃戝叧涓婄嚎娑堟伅涓婚 - ReceiveNotifyBusGateWayInfoChange(); - } - else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/NotifyGateWayOffline") - {//缃戝叧鎺夌嚎 - //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛� - ReceiveNotifyGateWayOffline(); - } - else if (topic == $"/BusGateWayToClient/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/Common/CheckGateway") + //App璁㈤槄绾㈠瀹�/缃戝叧閬ユ帶鍣ㄦ坊鍔犳垚鍔熼�氱煡 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/topo/found") { - var ss = Encoding.UTF8.GetString(e.ApplicationMessage.Payload); - ReceiveCheckGateway(ss); + var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey); + var revString = Encoding.UTF8.GetString(bytes); + HDL_ON.UI.UI2.PersonalCenter.PirDevice.PirMethod.controldata = revString; } - else + //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up") { - SetGatewayOnlineResetCheck(); - var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey); - - //bus鏁版嵁瑙f瀽 - if (DB_ResidenceData.Instance.GatewayType == 0) + var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey); + var revString = Encoding.UTF8.GetString(bytes); + UI.UI2.PersonalCenter.PirDevice.PirMethod.buttondata = revString; + } + #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰� + //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appHomeRefresh/up" + || topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appDeviceRefresh/up") + { + MainPage.Log("浣忓畢鏁版嵁鍒锋柊閫氱煡"); + new HttpServerRequest().GetHomePager(); + } + //appRoomRefresh锛氭埧闂存暟鎹埛鏂伴�氱煡 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appRoomRefresh/up") + { + MainPage.Log("鎴块棿鏁版嵁鍒锋柊閫氱煡"); + var roomResult = new HttpServerRequest().GetRoomList(); + if (roomResult.Code == StateCode.SUCCESS) { - var packet = new Packet(); - - if (!string.IsNullOrEmpty(mqttEncryptKey)) + MainPage.Log($"璇诲彇鎴块棿淇℃伅鎴愬姛"); + var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<SpatialApiPack>(roomResult.Data.ToString()); + if (revData == null) { - packet.Bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey); + revData = new SpatialApiPack(); } - else { - packet.Bytes = e.ApplicationMessage.Payload; + SpatialInfo.CurrentSpatial.UpdateSpatialList(revData.list); } -#if DEBUG - //string ddd = ""; - //foreach (var bb in packet.Bytes) - //{ - // ddd += bb + ","; - //} - //MainPage.Log($"mqtt bus data:{ddd}"); -#endif - packet.Manager(); } else { - MainPage.Log($"mqtt A-Link data"); - //A鍗忚鏁版嵁澶勭悊 - var revString = Encoding.UTF8.GetString(bytes); - Control.Ins.UpdataFunctionStatus(revString,null); + MainPage.Log($"璇诲彇鎴块棿鏁版嵁澶辫触:Code:{roomResult.Code}; msg:{roomResult.message}"); } + } + //appDeviceRefresh锛氳澶囨暟鎹埛鏂伴�氱煡 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/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 (SPK.MusicSpkList().Contains(localFunction.spk)) + { + 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}"); + } + } + //缃戝叧瀵嗛挜鍙樺寲 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/custom/mqtt/secret/change") + { + var pm = new HttpServerRequest(); + pm.GetHomeGatewayList(); + MainPage.Log($"缃戝叧瀵嗛挜鍙樻洿.鏂板瘑閽ワ細{DB_ResidenceData.Instance.HomeGateway.aesKey}"); + } + //瀹夐槻鐘舵�佸彉鍖� + else if (topic == $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/custom/security/status/up") + { + if (!string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.aesKey)) + { + try + { + var securityBytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey); + var securityString = Encoding.UTF8.GetString(securityBytes); + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<SecurityStatusObj>(securityString); + MainPage.Log($"瀹夐槻鐘舵�佸彉鍖栵細{securityString}"); + + if (temp != null) + { + Control_Udp.ReceiveRepeatManager(temp.id, null); + foreach (var updataSecurity in temp.objects) + { + var updataLocalSecurity = FunctionList.List.securities.Find((obj) => obj.sid == updataSecurity.sid); + if (updataLocalSecurity != null) + { + updataLocalSecurity.status = updataSecurity.status; + updataLocalSecurity.alarm = updataSecurity.alarm; + ArmCenterPage.LoadEvent_RefreshSecurityStatus(updataLocalSecurity); + } + } + HomePage.LoadEvent_RefreshSecurityStatus(); + } + }catch(Exception ex) + { + MainPage.Log($"瀹夐槻杩滅▼淇℃伅寮傚父:{ex.Message}"); + } + } + } + #endregion + //A缃戝叧璁惧鐘舵��-鍖呭惈娑傞甫璁惧 + else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/property/send") + { + var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey); + var revString = Encoding.UTF8.GetString(bytes); + MainPage.Log($"mqtt 鐘舵�佹洿鏂�:{revString}"); + Control.Ins.UpdataFunctionStatus(revString, null, true); + } + //涓�绔彛鏁版嵁瑙f瀽 + else + { + //SetGatewayOnlineResetCheck(); + //var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey); + //bus鏁版嵁瑙f瀽 + var packet = new Packet(); + + if (!string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.aesKey)) + { + packet.Bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey); + } + else + { + packet.Bytes = e.ApplicationMessage.Payload; + } + packet.Manager(); } } catch { } - }); + })); } //(2)DisconnectedHandler @@ -333,14 +523,33 @@ RemoteMqttClient.UseConnectedHandler(async (e) => { IfNeedReadAllDeviceStatus = true; + Control.Ins.GatewayOnline_Cloud = true; Utlis.WriteLine($"============>Mqtt杩滅▼杩炴帴鎴愬姛"); SendPushSignOut(); }); } #endregion - //} //(4)===========寮�濮嬭繛鎺ヨ繃绋�========== + + ////涓�绔彛姣忔閮借鍒锋柊瀵嗛挜 + //if (DB_ResidenceData.Instance.HomeGateway != null && DB_ResidenceData.Instance.HomeGateway.gatewayType == "BUSUDPGATEWAY") { + // var pm = new HttpServerRequest(); + // var result = pm.GetHomeGatewayList(); + // if(result == StateCode.SUCCESS) + // { + // MainPage.Log($"鍒锋柊涓�绔彛瀵嗛挜"); + // MainPage.Log($"鏃у瘑閽ワ細{mqttEncryptKey}"); + // mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey; + // MainPage.Log($"鏂板瘑閽ワ細{mqttEncryptKey}"); + // }else + // { + // return; + // } + //} + + + //涔嬪墠宸茬粡鑾峰彇鍙傛暟鎴愬姛杩� if (MqttInfoConfig.Current.IfGetMqttInfoSuccess) { @@ -357,6 +566,8 @@ catch (Exception ex) { Utlis.WriteLine($"error:" + ex.Message); + //mqtt杩炴帴寮傚父锛屾竻绌烘湰鍦癿qtt淇℃伅锛屽彲鑳介渶瑕侀噸鏂拌幏鍙栵細wxr + MqttInfoConfig.Current.Refresh(); } finally { @@ -366,7 +577,7 @@ Utlis.WriteLine($"StartCloudMqtt: 缁撴潫"); } - }); + })); } @@ -414,11 +625,6 @@ /// <returns></returns> static async Task StartMQTTGetInfo() { - if (!Control.Ins.IsRemote) - { - return; - } - await GetMqttInfoAndMQTTConnectAsync(); ////--鍒ゆ柇鏄綋鍓嶆槸鍚﹀垎浜殑浣忓畢 @@ -437,13 +643,9 @@ /// </summary> static async Task MQTTConnectAsync() { - - if (!Control.Ins.IsRemote) - { - return; - } - - if (MqttInfoConfig.Current.HomeGatewayInfo != null && MqttInfoConfig.Current.mMqttInfo != null) + //if (MqttInfoConfig.Current.HomeGatewayInfo != null && MqttInfoConfig.Current.mMqttInfo != null) + //娌℃湁缃戝叧鎯呭喌涓嬶紝涔熼渶瑕佽繛鎺qtt锛屾秱楦︾涓夋柟璁惧涓嶉渶瑕佺綉鍏� + if (MqttInfoConfig.Current.mMqttInfo != null) { try { @@ -461,7 +663,18 @@ MqttInfoConfig.Current.IfGetMqttInfoSuccess = true; MqttInfoConfig.Current.Save(); - mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey; + + + //mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey; + //瑙e瘑瀵嗛挜瑙勫垯锛氬凡鐜版湁鐨勪綇瀹匢D涓哄熀鍑�,浠庡彸杈逛竴涓�鑾峰彇鍊�,鏈�鍚庡鏋滀笉澶�16浣�,鍒欏線鍙宠ˉ闆� + string aesKey = string.Empty; + for (int i = DB_ResidenceData.Instance.CurrentRegion.id.Length - 1; i >= 0; i--) + { + aesKey += DB_ResidenceData.Instance.CurrentRegion.id[i].ToString(); + if (aesKey.Length == 16) { break; } + } + aesKey = aesKey.PadRight(16, '0'); + tuyaEncryptKey = aesKey; var options1 = new MQTTnet.Client.Options.MqttClientOptionsBuilder() .WithClientId(clientId) @@ -470,8 +683,6 @@ .WithCleanSession() .WithProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V311) .WithCommunicationTimeout(new TimeSpan(0, 0, 10)) - //.WithCommunicationTimeout (new TimeSpan (0, 0, 5)) - //.WithCommunicationTimeout (new TimeSpan (0, 1, 0)) .Build(); await DisConnectRemoteMqttClient("StartRemoteMqtt"); @@ -496,6 +707,8 @@ //閲嶆柊涓績鏈嶅姟鍣ㄨ幏鍙栧弬鏁版爣璁� MqttInfoConfig.Current.IfGetMqttInfoSuccess = false; Console.WriteLine("Connect error: " + ex.Message); + //mqtt杩炴帴寮傚父锛屾竻绌烘湰鍦癿qtt淇℃伅锛屽彲鑳介渶瑕侀噸鏂拌幏鍙栵細wxr + MqttInfoConfig.Current.Refresh(); } finally { @@ -517,12 +730,11 @@ { try { - SetGatewayOnlineResetCheck(); - if (Control.Ins.IsRemote) + //SetGatewayOnlineResetCheck(); + if (Control.Ins.GatewayOnline_Cloud) { CheckIfNeedReadAllDeviceStatus(); } - } catch { } } @@ -532,25 +744,23 @@ /// </summary> static void ReceiveNotifyGateWayOffline() { - if (Control.Ins.IsRemote) - { - Control.Ins.GatewayOnline = false; - } + Control.Ins.GatewayOnline_Cloud = false; } - /// <summary> /// 鏀跺埌鎸や笅绾挎帹閫� /// </summary> static void ReceiveNotifySqueezeAsync(string mMes) { -//#if DEBUG - return; -//#endif - if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊 + if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊//鎴栬�呭綋鍓嶄笉鏄繙绋嬮摼鎺ョ姸鎬� + //娴嬭瘯璐﹀彿锛屼笉鎸や笅绾� + switch (UserInfo.Current.userMobileInfo) + { + case "15626203746": + case "464027401@qq.com": + return; + } - //鏂紑杩滅▼杩炴帴 - Control.Ins.IsRemote = false; if (!UserInfo.Current.IsLogin) { return; @@ -563,7 +773,7 @@ //寮圭獥鎻愮ず琚尋涓嬬嚎 HDLCommon.Current.CheckLogout(); }); - + //UserInfo.Current.LastTime = DateTime.MinValue; //UserInfo.Current.SaveUserInfo(); @@ -577,20 +787,20 @@ //HDLRequest.Current.PushserivceSignOut (); } - /// <summary> - /// 鏀跺埌CheckGateway涓婚 - /// </summary> - static void ReceiveCheckGateway(string mMes) - { - if (!Control.Ins.IsRemote) return; + ///// <summary> + ///// 鏀跺埌CheckGateway涓婚 + ///// </summary> + //static void ReceiveCheckGateway(string mMes) + //{ + // if (!Control.Ins.IsRemote) return; - Utlis.WriteLine("ReceiveCheckGateway锛�"); + // Utlis.WriteLine("ReceiveCheckGateway锛�"); - //CheckIfNeedReadAllDeviceStatus (); + // //CheckIfNeedReadAllDeviceStatus (); - //var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(mMes); - Control.Ins.GatewayOnline = true; - } + // //var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(mMes); + // Control.Ins.GatewayOnline = true; + //} /// <summary> /// 鎺ㄩ�佹尋涓嬬嚎涓婚 @@ -616,16 +826,11 @@ { case 0: topicName = $"/ClientToBusGateWay/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/Common/ON"; - if (!string.IsNullOrEmpty(mqttEncryptKey)) + if (!string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.aesKey)) { - message = Securitys.EncryptionService.AesEncryptPayload(message, mqttEncryptKey); + message = Securitys.EncryptionService.AesEncryptPayload(message, DB_ResidenceData.Instance.HomeGateway.aesKey); } await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Payload = message, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce }); - break; - case 3: - topicName = $"/ClientToBusGateWay/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/Common/CheckGateway"; - Utlis.WriteLine("CheckGateway"); - await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce }); break; case 4://鍙戝竷鏂版柟妗堢殑鎸や笅绾夸富棰� topicName = $"/BusGateWayToClient/{UserInfo.Current.ID}" + PushNotifySqueeze; @@ -655,27 +860,27 @@ /// </summary> static bool IfNeedReadAllDeviceStatus = true; - /// <summary> - /// 璁剧疆缃戝叧鍦ㄧ嚎鏍囧織锛屽苟閲嶇疆CheckGateway鍙傛暟 - /// </summary> - static void SetGatewayOnlineResetCheck() - { - if (Control.Ins.IsRemote) - { - if (!Control.Ins.GatewayOnline) - { - try - { - if (DB_ResidenceData.Instance.HomeGateway != null) - { - DB_ResidenceData.Instance.HomeGateway.gatewayStatus = true; - } - Control.Ins.GatewayOnline = true; - } - catch { } - } - } - } + ///// <summary> + ///// 璁剧疆缃戝叧鍦ㄧ嚎鏍囧織锛屽苟閲嶇疆CheckGateway鍙傛暟 + ///// </summary> + //static void SetGatewayOnlineResetCheck() + //{ + // if (Control.Ins.IsRemote) + // { + // if (!Control.Ins.GatewayOnline) + // { + // try + // { + // if (DB_ResidenceData.Instance.HomeGateway != null) + // { + // DB_ResidenceData.Instance.HomeGateway.gatewayStatus = true; + // } + // Control.Ins.GatewayOnline = true; + // } + // catch { } + // } + // } + //} /// <summary> @@ -684,24 +889,27 @@ /// <returns></returns> static async Task GetMqttInfoAndMQTTConnectAsync() { - var mqttInfoRequestResult_Obj = new Server.HttpServerRequest().GetMqttRemoteInfo(GetRandomKey()); + var mqttInfoRequestResult_Obj = new HttpServerRequest().GetMqttRemoteInfo(GetRandomKey()); if (mqttInfoRequestResult_Obj != null) { + MainPage.Log($"鑾峰彇mqtt info 鎴愬姛 /r/n clientId:{mqttInfoRequestResult_Obj.clientId}/r/n passWord:{mqttInfoRequestResult_Obj.passWord} /r/n url:{mqttInfoRequestResult_Obj.url}/r/n userName:{mqttInfoRequestResult_Obj.userName}"); + + MqttInfoConfig.Current.mMqttInfo = mqttInfoRequestResult_Obj; await MQTTConnectAsync(); //1.鍒ゆ柇鏄惁缁戝畾浜嗙綉鍏筹紝鑾峰彇缃戝叧杩滅▼杩炴帴鐨勫姞瀵咾EY - if (DB_ResidenceData.Instance.CheckWhetherGatewayIsBound()) + //if (DB_ResidenceData.Instance.CheckWhetherGatewayIsBound()) { //2.鎵惧嚭鏄惁瀛樺湪鍖归厤褰撳墠浣忓畢鐨刴ac锛屽瓨鍦ㄥ啀杩涜杩滅▼銆� MqttInfoConfig.Current.HomeGatewayInfo = DB_ResidenceData.Instance.HomeGateway; //3.寮�濮嬭繛鎺� await MQTTConnectAsync(); } - else - { - Utlis.WriteLine("============>杩樻病缁戝畾缃戝叧"); - hadGateway = false; - } + //else + //{ + // Utlis.WriteLine("============>杩樻病缁戝畾缃戝叧"); + // hadGateway = false; + //} } } @@ -855,4 +1063,4 @@ } -} +} \ No newline at end of file -- Gitblit v1.8.0