From 01c46e7bfe9aa8fb20b29f70c83c03a307af548a Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期二, 22 十二月 2020 16:35:16 +0800 Subject: [PATCH] 2020-12-22 1.更新。 --- HDL_ON/DAL/Mqtt/MqttClient.cs | 229 +++++++++++++-------------------------------------------- 1 files changed, 52 insertions(+), 177 deletions(-) diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs index a4a1695..9246240 100644 --- a/HDL_ON/DAL/Mqtt/MqttClient.cs +++ b/HDL_ON/DAL/Mqtt/MqttClient.cs @@ -21,7 +21,7 @@ /// </summary> static string mqttEncryptKey = ""; //static string checkGatewayTopicBase64 = ""; - + static bool hadGateway = true; /// <summary> /// 鎸や笅绾夸富棰� /// </summary> @@ -119,7 +119,7 @@ /// <summary> /// 澶栫綉鐨凪QTT鏄惁姝e湪杩炴帴 /// </summary> - public static bool remoteMqttIsConnecting; + public static bool RemoteMqttIsConnecting; static bool remoteIsConnected; static MqttClient() @@ -132,12 +132,14 @@ static void InitMqtt() { new System.Threading.Thread(async () => { - while (true) + while (hadGateway) { try { System.Threading.Thread.Sleep(500); if (!Control.Ins.IsRemote) continue; + //杩涘叆鍚庡彴涓嶅鐞� + if (MainPage.IsEnterBackground) continue; await StartCloudMqtt(); await SubscribeTopics(); @@ -181,7 +183,7 @@ var topicAlinkStatus = new MqttTopicFilter() { - Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/app/thing/property/#", + Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/app/thing/property/send", QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce }; @@ -210,8 +212,7 @@ /// </summary> public static async Task StartCloudMqtt() { - - if (OnAppConfig.Instance.internetStatus == 0) + if (MainPage.InternetStatus == 0) { return; } @@ -222,7 +223,7 @@ } //杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺 - if (remoteMqttIsConnecting || remoteIsConnected) + if (RemoteMqttIsConnecting || remoteIsConnected) { return; } @@ -233,7 +234,7 @@ try { #region 鍒濆鍖栬繙绋婱qtt - + RemoteMqttIsConnecting = true; RemoteMqttClient = new MqttFactory().CreateMqttClient(); @@ -268,8 +269,12 @@ } else { + MainPage.Log($"mqtt data"); SetGatewayOnlineResetCheck(); - if (Entity.DB_ResidenceData.residenceData.GatewayType == 0) + var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey); + + //bus鏁版嵁瑙f瀽 + if (DB_ResidenceData.Instance.GatewayType == 0) { var packet = new Packet(); @@ -286,161 +291,8 @@ else { //A鍗忚鏁版嵁澶勭悊 - var revString = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload); - var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<GatewayAlinkControlObj>(revString); - if (temp != null) - { - var allLocalFuntion = FunctionList.List.GetAllDeviceFunctionList(); - foreach (var updateTemp in temp.objects) - { - bool hadChange = false;//鐘舵�佹湁鍙樺寲鍐嶆洿鏂扮晫闈� - var updataObj = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid); - if (updataObj != null) - { - foreach (var attr in updateTemp.status) - { - foreach (var locatAttr in updataObj.attributes) - { - if (attr.key == locatAttr.key) - { - if (locatAttr.curValue.ToString() == attr.value) - { - continue; - } - locatAttr.curValue = attr.value; - hadChange = true; - } - } - } - if(!hadChange)//鐘舵�佹湁鍙樺寲鍐嶆洿鏂扮晫闈� - { - continue; - } - //鏇存柊鐣岄潰鐘舵�� - switch (updataObj.spk) - { - case SPK.LightSwitch: - RelayPage.UpdataState(updataObj as Light); - break; - case SPK.LightDimming: - var dimming = updataObj as Light; - dimming.lastState = Language.StringByID(StringId.Brightness) + " : " + dimming.brightness + "%"; - DimmerPage.UpdataStates(dimming); - break; - case SPK.ElectricFan: - var fan = updataObj as Fan; - fan.lastState = Language.StringByID(StringId.Level) + " : " + fan.openLevel; - FanPage.UpdataState(fan); - break; - case SPK.LightRGB: - var rgb = updataObj as Light; - rgb.lastState = Language.StringByID(StringId.Brightness) + " : " + rgb.brightness + "%"; - RGBPage.UpdataStates(rgb); - break; - case SPK.LightRGBW: - case SPK.LightCCT: - break; - case SPK.CurtainSwitch: - var curtain = updataObj as Curtain; - curtain.lastState = curtain.trait_on_off.curValue.ToString() == "on" ? Language.StringByID(StringId.Open) : Language.StringByID(StringId.Close); - CurtainModulePage.UpdataState(curtain); - break; - case SPK.CurtainTrietex: - var trietex = updataObj as Curtain; - trietex.lastState = Language.StringByID(StringId.Open) + trietex.percent + "%"; - MotorCurtainPage.UpdataState(trietex); - break; - case SPK.CurtainRoller: - var roller = updataObj as Curtain; - roller.lastState = Language.StringByID(StringId.Open) + roller.percent + "%"; - RollingShutterPage.UpdataState(roller); - break; - case SPK.CurtainShades: - break; - case SPK.AcStandard: - var ac = updataObj as AC; - ac.lastState = ""; - switch (ac.trait_mode.curValue.ToString()) - { - case "cool": - ac.lastState = Language.StringByID(StringId.Cool); - break; - case "heat": - ac.lastState = Language.StringByID(StringId.Heat); - break; - case "dry": - ac.lastState = Language.StringByID(StringId.Dry); - break; - case "auto": - ac.lastState = Language.StringByID(StringId.Auto); - break; - case "fan": - ac.lastState = Language.StringByID(StringId.AirSupply); - break; - } - switch (ac.trait_fan.curValue.ToString()) - { - case "high": - ac.lastState += " " + Language.StringByID(StringId.HighWindSpeed); - break; - case "medium": - ac.lastState += " " + Language.StringByID(StringId.MiddleWindSpeed); - break; - case "low": - ac.lastState += " " + Language.StringByID(StringId.LowWindSpeed); - break; - case "auto": - ac.lastState += " " + Language.StringByID(StringId.Auto); - break; - } - ac.lastState += " " + ac.trait_temp.curValue + ac.tempUnitString; - ACPage.UpdataStates(ac); - break; - case SPK.FloorHeatStandard: - var fh = updataObj as FloorHeating; - switch (fh.trait_mode.curValue) - { - case "normal": - fh.lastState = Language.StringByID(StringId.Normal); - break; - case "day": - fh.lastState = Language.StringByID(StringId.Day); - break; - case "night": - fh.lastState = Language.StringByID(StringId.Night); - break; - case "timer": - fh.lastState = Language.StringByID(StringId.Auto); - break; - case "away": - fh.lastState = Language.StringByID(StringId.Away); - break; - } - fh.lastState += " " + fh.trait_temp.curValue + fh.tempUnitString; - FloorHeatingPage.UpdataStates(fh); - break; - case SPK.SensorPm25: - case SPK.SensorCO2: - case SPK.SensorTVOC: - case SPK.SensorTemperature: - case SPK.SensorHumidity: - var sensor = updataObj as Sensor; - EnvironmentalSciencePage.LoadEvent_UpdataStatus(sensor); - break; - case SPK.ElectricSocket: - break; - case SPK.ElectricTV: - break; - default: - break; - } - HomePage.UpdataFunctionStates(updataObj); - RoomPage.UpdataStates(updataObj); - FunctionPage.UpdataStates(updataObj); - ClassificationPage.UpdataInfo(updataObj); - } - } - } + var revString = Encoding.UTF8.GetString(bytes); + Control.Ins.UpdataFunctionStatus(revString,null); } } } @@ -461,10 +313,27 @@ if (RemoteMqttClient.ConnectedHandler == null) { RemoteMqttClient.UseConnectedHandler(async (e) => { + if (DB_ResidenceData.Instance.HomeGateway.gatewayStatus) + { + Control.Ins.GatewayOnline = true; + } + else + { + //new System.Threading.Thread(() => { + // while(true) + // { + // System.Threading.Thread.Sleep(1000); + // if (DB_ResidenceData.Instance.HomeGateway.GatewayOnline) + // { + // Control.Ins.GatewayOnline = true; + // break; + // } + // } + //}) { IsBackground = true }.Start(); + } IfNeedReadAllDeviceStatus = true; Utlis.WriteLine($"============>Mqtt杩滅▼杩炴帴鎴愬姛"); SendPushSignOut(); - FunctionList.List.ReadAllFunctionStatus(); }); } #endregion @@ -491,7 +360,7 @@ finally { //鏈�缁堣閲婃斁杩炴帴鐘舵�� - remoteMqttIsConnecting = false; + RemoteMqttIsConnecting = false; Utlis.WriteLine($"StartCloudMqtt: 缁撴潫"); } @@ -521,7 +390,7 @@ { try { - if (MqttInfoConfig.Current.HomeGatewayInfo != null && MqttInfoConfig.Current.HomeGatewayInfo.mac == Entity.DB_ResidenceData.residenceData.residenceGatewayMAC) + if (MqttInfoConfig.Current.HomeGatewayInfo != null && MqttInfoConfig.Current.HomeGatewayInfo.mac == Entity.DB_ResidenceData.Instance.residenceGatewayMAC) { await MQTTConnectAsync(); } @@ -674,7 +543,9 @@ /// </summary> static void ReceiveNotifySqueezeAsync(string mMes) { - +#if DEBUG + return; +#endif if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊 //鏂紑杩滅▼杩炴帴 @@ -686,13 +557,15 @@ DisConnectRemoteMqttClient("鎸や笅绾�"); - UserInfo.Current.LastTime = DateTime.MinValue; - UserInfo.Current.SaveUserInfo(); + HDLCommon.Current.CheckLogout(); - Application.RunOnMainThread(() => { - MainPage.GoLoginPage(UserInfo.Current); - //寮圭獥鎻愮ず琚尋涓嬬嚎 - }); + //UserInfo.Current.LastTime = DateTime.MinValue; + //UserInfo.Current.SaveUserInfo(); + + //Application.RunOnMainThread(() => { + // MainPage.GoLoginPage(UserInfo.Current); + // //寮圭獥鎻愮ず琚尋涓嬬嚎 + //}); //2020-08-11 鍒犻櫎鎺ㄩ�佹暟鎹� //HDLRequest.Current.PushserivceSignOut (); @@ -786,7 +659,8 @@ { if (Control.Ins.IsRemote) { - Control.Ins.GatewayOnline = true; + if (!Control.Ins.GatewayOnline) + Control.Ins.GatewayOnline = true; } } @@ -803,16 +677,17 @@ MqttInfoConfig.Current.mMqttInfo = mqttInfoRequestResult_Obj; await MQTTConnectAsync(); //1.鍒ゆ柇鏄惁缁戝畾浜嗙綉鍏筹紝鑾峰彇缃戝叧杩滅▼杩炴帴鐨勫姞瀵咾EY - if (DB_ResidenceData.residenceData.CheckWhetherGatewayIsBound()) + if (DB_ResidenceData.Instance.CheckWhetherGatewayIsBound()) { //2.鎵惧嚭鏄惁瀛樺湪鍖归厤褰撳墠浣忓畢鐨刴ac锛屽瓨鍦ㄥ啀杩涜杩滅▼銆� - MqttInfoConfig.Current.HomeGatewayInfo = DB_ResidenceData.residenceData.HomeGateway; + MqttInfoConfig.Current.HomeGatewayInfo = DB_ResidenceData.Instance.HomeGateway; //3.寮�濮嬭繛鎺� await MQTTConnectAsync(); } else { Utlis.WriteLine("============>杩樻病缁戝畾缃戝叧"); + hadGateway = false; } } } -- Gitblit v1.8.0