From be95e839f40eb3ddf64706b60cba6dfcf4fad5e5 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期五, 03 四月 2020 14:31:44 +0800
Subject: [PATCH] 2020-04-03 1.去掉登录前ping百度域名的网络监测。
---
Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs | 234 +++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 158 insertions(+), 76 deletions(-)
diff --git a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
index 4d25cae..0d6fb64 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
@@ -45,6 +45,7 @@
static MqttCommon ()
{
InitMqtt ();
+ InitCheckGateway ();
}
/// <summary>
@@ -55,11 +56,13 @@
{
new System.Threading.Thread (async () => {
while (true) {
- System.Threading.Thread.Sleep (100);
- if (!CommonPage.IsRemote) continue;
+ try {
+ System.Threading.Thread.Sleep (100);
+ if (!CommonPage.IsRemote) continue;
- await StartCloudMqtt ();
- await CheckingSubscribeTopics ();
+ await StartCloudMqtt ();
+ await CheckingSubscribeTopics ();
+ } catch { }
}
}) { IsBackground = true }.Start ();
@@ -127,17 +130,17 @@
try {
if (remoteIsConnected) {
remoteIsConnected = false;
- System.Console.WriteLine ($"============>MqttRemote涓诲姩鏂紑_{s}");
+ Utlis.WriteLine ($"============>MqttRemote涓诲姩鏂紑_{s}");
//await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
await RemoteMqttClient.DisconnectAsync ();
if (CommonPage.IsRemote) {
Utlis.ShowAppLinkStatus (AppLinkStatus.CloudUnlink);
}
- System.Console.WriteLine ($"============>MqttRemoteDisConnectRemoteMqttClient");
+ Utlis.WriteLine ($"============>MqttRemoteDisConnectRemoteMqttClient");
}
} catch (Exception e) {
- System.Console.WriteLine ($"============>MqttRemote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
+ Utlis.WriteLine ($"============>MqttRemote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
}
}
static DateTime dateTime = DateTime.MinValue;
@@ -186,7 +189,7 @@
}
var aesDecryptTopic = e.ApplicationMessage.Topic;
var aesDecryptPayload = e.ApplicationMessage.Payload;
- //Console.WriteLine ("Topic={0}", aesDecryptTopic);
+ //Utlis.WriteLine ("Topic={0}", aesDecryptTopic);
//if (aesDecryptTopic == $"NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}") {//缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey
//2020-01-11 淇敼璁㈤槄涓婚鍦板潃
@@ -197,59 +200,28 @@
} else if (aesDecryptTopic == $"/BusGateWayToClient/{mMqttInfo.connEmqClientId}/Push/NotifySqueeze") {//璁㈤槄鎸や笅绾块棶棰�
await ReceiveNotifySqueezeAsync (aesDecryptPayload);
}else if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/Common/CheckGateway") {
- MainPage.WiFiStatus = "CrabtreeAdd/CloudUnlink.png";
- // = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/OldON";
- var ss = CommonPage.MyEncodingUTF8.GetString (aesDecryptPayload);
- var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack> (ss);
- if (obj == null) {
- return;
- }
- switch (obj.StateCode) {
- case "HDLUdpDataForwardServerMqttClientNoOnLine":
- case "NoOnline":
- case "NetworkAnomaly"://涓嶅湪绾�
- MainPage.AddTip ("Gateway offline");
- //Application.RunOnMainThread (() => {
- // Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor;
- //});
- break;
- case "NoRecord"://MAC涓嶆纭�
- MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.MACError));
- //Application.RunOnMainThread (() => {
- // Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor;
- //});
- break;
- case "Success":
- MainPage.AddTip (UserConfig.Instance.CurrentRegion.Name + ":" + Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkSuccess));
- MainPage.WiFiStatus = "CrabtreeAdd/CloudLink.png";
- break;
- default:
- MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkLoser));
- //Application.RunOnMainThread (() => {
- // Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor;
- //});
- break;
- }
- Application.RunOnMainThread (() => {
- UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus;
- });
+ ReceiveCheckGatewayTopic ();
} else {
+ SetGatewayOnlineResetCheck ();
+
if (!string.IsNullOrEmpty (mqttEncryptKey)) {
aesDecryptPayload = Shared.Securitys.EncryptionService.AesDecryptPayload (e.ApplicationMessage.Payload, mqttEncryptKey);
}
+ var packet = new Packet ();
+ packet.IsLocal = false;
+ packet.Bytes = aesDecryptPayload;
+ packet.Manager ();
+
}
- var packet = new Packet ();
- packet.IsLocal = false;
- packet.Bytes = aesDecryptPayload;
- packet.Manager ();
+
} catch { }
});
}
if (RemoteMqttClient.DisconnectedHandler == null) {
RemoteMqttClient.UseDisconnectedHandler (async (e) => {
- System.Console.WriteLine ($"============>Mqtt杩滅▼杩炴帴鏂紑");
+ Utlis.WriteLine ($"============>Mqtt杩滅▼杩炴帴鏂紑");
isSubscribeTopicSuccess = false;
await DisConnectRemoteMqttClient ("StartRemoteMqtt.DisconnectedHandler");
//await StartRemoteMqtt();
@@ -268,7 +240,7 @@
RemoteMqttClient.UseConnectedHandler (async (e) => {
IfNeedReadAllDeviceStatus = true;
- System.Console.WriteLine ($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
+ Utlis.WriteLine ($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
if (CommonPage.IsRemote) {
Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink);
}
@@ -332,7 +304,7 @@
await MQTTConnectAsync ();
} else {
- System.Console.WriteLine ("============>Mqtt 鍙栨秷杩炴帴锛屽綋鍓嶄綇瀹呮病缁戝畾缃戝叧");
+ Utlis.WriteLine ("============>Mqtt 鍙栨秷杩炴帴锛屽綋鍓嶄綇瀹呮病缁戝畾缃戝叧");
}
}
@@ -362,7 +334,7 @@
}
} catch (Exception ex) {
- System.Console.WriteLine ($"============>Mqtt 杩滅▼杩炴帴閫氳杩炴帴鍑哄紓甯�:{ex.Message}");
+ Utlis.WriteLine ($"============>Mqtt 杩滅▼杩炴帴閫氳杩炴帴鍑哄紓甯�:{ex.Message}");
} finally {
//鏈�缁堣閲婃斁杩炴帴鐘舵��
remoteMqttIsConnecting = false;
@@ -414,7 +386,7 @@
//{
// try {
// if (!remoteIsConnected) {
- // System.Console.WriteLine ($"============>Mqtt 鏈繛鎺� 鍙栨秷鍙戦��");
+ // Utlis.WriteLine ($"============>Mqtt 鏈繛鎺� 鍙栨秷鍙戦��");
// return;
// }
@@ -448,10 +420,10 @@
// var m1 = new MqttApplicationMessage { Topic = topicName, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce };
// try {
- // Console.WriteLine ("CheckGateway");
+ // Utlis.WriteLine ("CheckGateway");
// RemoteMqttClient.PublishAsync (m1);
// } catch (Exception e) {
- // Console.WriteLine ($"CheckGateway Fail:{e.Message}");
+ // Utlis.WriteLine ($"CheckGateway Fail:{e.Message}");
// //await DisConnectRemoteMqttClient (e.Message);
// //await StartCloudMqtt ();
// }
@@ -474,7 +446,7 @@
{
try {
//if (!remoteIsConnected) {
- // System.Console.WriteLine ($"============>Mqtt 鏈繛鎺� 鍙栨秷鍙戦��");
+ // Utlis.WriteLine ($"============>Mqtt 鏈繛鎺� 鍙栨秷鍙戦��");
// return;
//}
@@ -489,12 +461,12 @@
break;
case 3:
topicName = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/CheckGateway";
- Console.WriteLine ("CheckGateway");
+ //Utlis.WriteLine ("CheckGateway");
await RemoteMqttClient.PublishAsync (new MqttApplicationMessage { Topic = topicName, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
break;
}
} catch (Exception e) {
- // System.Console.WriteLine ($"============>Mqtt MqttRemoteSend catch");
+ // Utlis.WriteLine ($"============>Mqtt MqttRemoteSend catch");
if (!IsDisConnectingWithSendCatch) {
IsDisConnectingWithSendCatch = true;
await DisConnectRemoteMqttClient ("MqttRemoteSendCatch");
@@ -552,7 +524,7 @@
} else {
- System.Console.WriteLine ("============>Mqtt 鍙栨秷杩炴帴锛屽綋鍓嶄綇瀹呮病缁戝畾缃戝叧");
+ Utlis.WriteLine ("============>Mqtt 鍙栨秷杩炴帴锛屽綋鍓嶄綇瀹呮病缁戝畾缃戝叧");
}
} else {
var mGatewayRes = infoResult.PageData.Find ((obj) => obj.GatewayUniqueId == UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId);
@@ -577,13 +549,10 @@
/// </summary>
static async Task ReceiveNotifyBusGateWayInfoChange ()
{
- System.Console.WriteLine ("============>Mqtt 缃戝叧涓婄嚎");
- IsGatewayOnline = true;
+ Utlis.WriteLine ("============>Mqtt 缃戝叧涓婄嚎");
+ SetGatewayOnlineResetCheck ();
if (CommonPage.IsRemote) {
- if (MainPage.WiFiStatus != "CrabtreeAdd/CloudLink.png") {
- Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink);
- }
//#if DEBUG
MainPage.AddTip ("Gateway login online");
//#endif
@@ -591,8 +560,6 @@
IfNeedReadAllDeviceStatus = false;
Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus ();
}
-
-
}
//褰撳墠浣忓畢涓嶆槸鍒嗕韩鏉�
@@ -619,7 +586,7 @@
/// </summary>
static void ReceiveNotifyGateWayOffline ()
{
- System.Console.WriteLine ("============>Mqtt GateWayOffline");
+ Utlis.WriteLine ("============>Mqtt GateWayOffline");
IsGatewayOnline = false;
if (CommonPage.IsRemote) {
Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline);
@@ -631,14 +598,129 @@
}
}
+
+ static int CheckGatewayCount = 0;
+ static DateTime mCheckGatewayTime;
+
+ /// <summary>
+ /// 璁剧疆缃戝叧鍦ㄧ嚎鏍囧織锛屽苟閲嶇疆CheckGateway鍙傛暟
+ /// </summary>
+ static void SetGatewayOnlineResetCheck ()
+ {
+ IsGatewayOnline = true;
+ mCheckGatewayTime = DateTime.Now;
+ CheckGatewayCount = 0;
+ if (CommonPage.IsRemote) {
+ if (MainPage.WiFiStatus != "CrabtreeAdd/CloudLink.png") {
+ Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink);
+ }
+ }
+ }
+
+ //static void TipGatewayOffline () {
+
+ //}
+
+ /// <summary>
+ /// 瀹氭椂妫�娴嬬綉鍏虫槸鍚﹀湪绾�
+ /// 1.绾跨▼浼戠湢闂撮殧5s
+ /// 2.鍙戦�丆heckGateway闂撮殧涓�9S锛屾敹鍒颁富棰樺埛鏂拌鏃堕棿锛岄噸缃彂閫佹鏁�
+ /// 3.鍙戦�佹鏁板埌杈�3娆′互涓婏紝鍒欏垽瀹氱綉鍏充负绂荤嚎鐘舵��
+ /// </summary>
+ /// <returns></returns>
+ static void InitCheckGateway ()
+ {
+ new System.Threading.Thread (async () => {
+ while (true) {
+ try {
+
+ if (CommonPage.IsRemote && remoteIsConnected) {
+ if (CheckGatewayCount >= 3) {
+ //杩炵画3娆℃病鍥炲锛屽垽瀹氱綉鍏宠秴鏃�
+ if (MainPage.WiFiStatus == "CrabtreeAdd/CloudLink.png") {
+ IsGatewayOnline = false;
+ Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline);
+ MainPage.AddTip ("Gateway offline!");
+ }
+ }
+
+ if (mCheckGatewayTime.AddSeconds (10).Ticks <= System.DateTime.Now.Ticks) {
+ mCheckGatewayTime = DateTime.Now;
+ //CheckGateway
+ MqttRemoteSend (new byte [] { }, 3);
+ CheckGatewayCount++;
+#if DEBUG
+ Utlis.WriteLine ("CheckGateway");
+#endif
+
+
+ }
+ }
+
+ System.Threading.Thread.Sleep (5500);
+ } catch { }
+
+ }
+ }) { IsBackground = true }.Start ();
+ }
+
+
+ /// <summary>
+ /// 鏀跺埌CheckGateway涓婚
+ /// </summary>
+ static void ReceiveCheckGatewayTopic () {
+ //Utlis.WriteLine ("============>Mqtt CheckGateway缃戝叧鍥炲");
+ SetGatewayOnlineResetCheck ();
+
+
+
+ //鏃х綉鍏虫柟娉�
+ //MainPage.WiFiStatus = "CrabtreeAdd/CloudUnlink.png";
+ //// = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/OldON";
+ //var ss = CommonPage.MyEncodingUTF8.GetString (aesDecryptPayload);
+ //var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack> (ss);
+ //if (obj == null) {
+ // return;
+ //}
+ //switch (obj.StateCode) {
+ //case "HDLUdpDataForwardServerMqttClientNoOnLine":
+ //case "NoOnline":
+ //case "NetworkAnomaly"://涓嶅湪绾�
+ // MainPage.AddTip ("Gateway offline");
+ // //Application.RunOnMainThread (() => {
+ // // Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor;
+ // //});
+ // break;
+ //case "NoRecord"://MAC涓嶆纭�
+ // MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.MACError));
+ // //Application.RunOnMainThread (() => {
+ // // Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor;
+ // //});
+ // break;
+ //case "Success":
+ // MainPage.AddTip (UserConfig.Instance.CurrentRegion.Name + ":" + Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkSuccess));
+ // MainPage.WiFiStatus = "CrabtreeAdd/CloudLink.png";
+ // break;
+ //default:
+ // MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkLoser));
+ // //Application.RunOnMainThread (() => {
+ // // Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor;
+ // //});
+ // break;
+ //}
+ //Application.RunOnMainThread (() => {
+ // UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus;
+ //});
+ }
+
/// <summary>
/// 鏀跺埌鎸や笅绾挎帹閫�
/// </summary>
static async Task ReceiveNotifySqueezeAsync (byte [] mes)
{
- Console.WriteLine ($"============>MqttNotifySqueeze: {ErrorCode.LoginInAnotherDevice}");
+ Utlis.WriteLine ($"============>MqttNotifySqueeze: {ErrorCode.LoginInAnotherDevice}");
var mMes = CommonPage.MyEncodingUTF8.GetString (mes);
if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊
@@ -916,7 +998,7 @@
RemoteMqttClient = null;
}
CommonPage.IsRemote = false;
- Console.WriteLine ("Close Mqtt!!!");
+ Utlis.WriteLine ("Close Mqtt!!!");
} catch { }
}
@@ -1006,7 +1088,7 @@
webPush.DeleteToken_Push (UserConfig.Instance.tokenID);
});
} catch (Exception ex) {
- Console.WriteLine (ex.Message);
+ Utlis.WriteLine (ex.Message);
} finally {
Application.RunOnMainThread (() => {
Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.LinkStatusTipColor;
@@ -1072,7 +1154,7 @@
});
RemoteMqttClient.UseDisconnectedHandler (e => {
- //Console.WriteLine ("RemoteMqttClient UseDisconnectedHandler");
+ //Utlis.WriteLine ("RemoteMqttClient UseDisconnectedHandler");
if (thisShowTip) {
if (CommonPage.IsRemote) {
//MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.RemoteConnectionDisconnected));
@@ -1086,7 +1168,7 @@
}
});
RemoteMqttClient.UseConnectedHandler (async e => {
- //Console.WriteLine ("RemoteMqttClient IsRemote");
+ //Utlis.WriteLine ("RemoteMqttClient IsRemote");
await MqttCheckGateway ();
});
}
@@ -1099,14 +1181,14 @@
MainPage.Loading.Hide ();
Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor;
});
- System.Console.WriteLine ($"閲嶆柊杩炴帴杩滅▼閫氳澶辫触锛屽洜涓鸿幏鍙栨柊鐨凨EY澶辫触");
+ Utlis.WriteLine ($"閲嶆柊杩炴帴杩滅▼閫氳澶辫触锛屽洜涓鸿幏鍙栨柊鐨凨EY澶辫触");
return;
}
//var messgae = System.Text.Encoding.UTF8.GetString (tempResult);
var responsePack = tempResult.ResponseData;// Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>> (messgae);
//if (responsePack == null || responsePack ["ResponseData"] == null) {
- // Console.WriteLine ("鏂紑鍚庨噸鏂伴摼鎺ラ渶瑕侀噸鏂扮櫥褰曡幏鍙栬繛鎺ョ殑瀵嗙爜澶辫触");
+ // Utlis.WriteLine ("鏂紑鍚庨噸鏂伴摼鎺ラ渶瑕侀噸鏂扮櫥褰曡幏鍙栬繛鎺ョ殑瀵嗙爜澶辫触");
// return;
//}
var dictrionaryResult = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>> (tempResult.ResponseData.ToString ());
@@ -1134,7 +1216,7 @@
await Close ();
await RemoteMqttClient.ConnectAsync (options);
} catch (Exception ex) {
- System.Console.WriteLine ("============>" + ex.Message);
+ Utlis.WriteLine ("============>" + ex.Message);
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
isConnecting = false.ToString ();
@@ -1228,7 +1310,7 @@
return;
}
var topicName = @"/" + MainPage.LoginUser.AccountString.ToLower () + @"/CheckGateway/" + UserConfig.Instance.GatewayMAC.Replace (".", "");
- Console.WriteLine ("MqttCheckGateway : " + topicName);
+ Utlis.WriteLine ("MqttCheckGateway : " + topicName);
//base64鍔犲瘑涓婚
var topicNameBase64 = Shared.Securitys.EncryptionService.AesEncryptTopic (topicName, mqttEncryptKey);
--
Gitblit v1.8.0