From 28b6014b7cbbe6d1667e338743d257b3e98e966d Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 26 二月 2021 14:48:00 +0800
Subject: [PATCH] Merge branch 'dev-tzy' of http://172.16.1.23:6688/r/~wxr/HDL_APP_Project into dev-tzy
---
HDL_ON/DAL/Mqtt/MqttClient.cs | 250 ++++++++++++++++++++++---------------------------
1 files changed, 113 insertions(+), 137 deletions(-)
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 405c696..9cded85 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -71,11 +71,6 @@
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)
@@ -138,9 +133,12 @@
try
{
System.Threading.Thread.Sleep(500);
- if (!Control.Ins.IsRemote) continue;
//杩涘叆鍚庡彴涓嶅鐞�
if (MainPage.IsEnterBackground) continue;
+ if (MqttInfoConfig.Current.HomeGatewayInfo == null)
+ {
+ continue;
+ }
await StartCloudMqtt();
await SubscribeTopics();
@@ -171,48 +169,35 @@
{
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/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/property/send",
QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
};
- var topicAlinkGatewayStatus = new MqttTopicFilter()
- {
- Topic = $"/user/{DB_ResidenceData.Instance.HomeGateway.gatewayId}/app/thing/property/send",
- QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
- };
- //var topicBusStatus = new MqttTopicFilter()
- //{
- // Topic = $"/BusGateWayToClient/{}/Common",
- // QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
- //};
Utlis.WriteLine("寮�濮嬭闃咃紒");
- var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterBusGateWayToClient, topicFilterPush2, topicAlinkStatus, topicAlinkGatewayStatus });
+ var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterPush2, topicAlinkStatus });
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)
@@ -261,62 +246,62 @@
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;
+ }
+ }
+
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")
- {
- var ss = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
- ReceiveCheckGateway(ss);
- }
- //娑傞甫璁惧鐘舵��
+ //A缃戝叧璁惧鐘舵��-鍖呭惈娑傞甫璁惧
else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/property/send")
{
var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
- MainPage.Log($"tuya mqtt A-Link data");
- //A鍗忚鏁版嵁澶勭悊
var revString = Encoding.UTF8.GetString(bytes);
Control.Ins.UpdataFunctionStatus(revString, null);
}
+ //涓�绔彛鏁版嵁瑙f瀽
else
{
- SetGatewayOnlineResetCheck();
+ //SetGatewayOnlineResetCheck();
var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
//bus鏁版嵁瑙f瀽
- if (DB_ResidenceData.Instance.GatewayType == 0)
- {
- var packet = new Packet();
+ var packet = new Packet();
- if (!string.IsNullOrEmpty(mqttEncryptKey))
- {
- packet.Bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
- }
- else
- {
- packet.Bytes = e.ApplicationMessage.Payload;
- }
- packet.Manager();
+ if (!string.IsNullOrEmpty(mqttEncryptKey))
+ {
+ packet.Bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
}
else
{
- MainPage.Log($"mqtt A-Link data");
- //A鍗忚鏁版嵁澶勭悊
- var revString = Encoding.UTF8.GetString(bytes);
- Control.Ins.UpdataFunctionStatus(revString, null);
+ packet.Bytes = e.ApplicationMessage.Payload;
}
+ packet.Manager();
}
}
catch { }
@@ -338,12 +323,12 @@
RemoteMqttClient.UseConnectedHandler(async (e) =>
{
IfNeedReadAllDeviceStatus = true;
+ Control.Ins.GatewayOnline_Cloud = true;
Utlis.WriteLine($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
SendPushSignOut();
});
}
#endregion
- //}
//(4)===========寮�濮嬭繛鎺ヨ繃绋�==========
//涔嬪墠宸茬粡鑾峰彇鍙傛暟鎴愬姛杩�
@@ -419,11 +404,6 @@
/// <returns></returns>
static async Task StartMQTTGetInfo()
{
- if (!Control.Ins.IsRemote)
- {
- return;
- }
-
await GetMqttInfoAndMQTTConnectAsync();
////--鍒ゆ柇鏄綋鍓嶆槸鍚﹀垎浜殑浣忓畢
@@ -442,12 +422,6 @@
/// </summary>
static async Task MQTTConnectAsync()
{
-
- if (!Control.Ins.IsRemote)
- {
- return;
- }
-
//if (MqttInfoConfig.Current.HomeGatewayInfo != null && MqttInfoConfig.Current.mMqttInfo != null)
//娌℃湁缃戝叧鎯呭喌涓嬶紝涔熼渶瑕佽繛鎺qtt锛屾秱楦︾涓夋柟璁惧涓嶉渶瑕佺綉鍏�
if (MqttInfoConfig.Current.mMqttInfo != null)
@@ -468,12 +442,9 @@
MqttInfoConfig.Current.IfGetMqttInfoSuccess = true;
MqttInfoConfig.Current.Save();
- mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey;
- if (MqttInfoConfig.Current.HomeGatewayInfo == null)
- {
- MqttInfoConfig.Current.HomeGatewayInfo = new Server.HomeGatewayInfo();
- }
+
+ mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey;
//瑙e瘑瀵嗛挜瑙勫垯锛氬凡鐜版湁鐨勪綇瀹匢D涓哄熀鍑�,浠庡彸杈逛竴涓�鑾峰彇鍊�,鏈�鍚庡鏋滀笉澶�16浣�,鍒欏線鍙宠ˉ闆�
string aesKey = string.Empty;
for (int i = DB_ResidenceData.Instance.CurrentRegion.RegionID.Length - 1; i >= 0; i--)
@@ -538,12 +509,11 @@
{
try
{
- SetGatewayOnlineResetCheck();
- if (Control.Ins.IsRemote)
+ //SetGatewayOnlineResetCheck();
+ if (Control.Ins.GatewayOnline_Cloud)
{
CheckIfNeedReadAllDeviceStatus();
}
-
}
catch { }
}
@@ -553,22 +523,33 @@
/// </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 (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊
+ if (mMes == PushSignStr ) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊//鎴栬�呭綋鍓嶄笉鏄繙绋嬮摼鎺ョ姸鎬�
+ //娴嬭瘯璐﹀彿锛屼笉鎸や笅绾�
+ switch (UserInfo.Current.AccountString)
+ {
+ case "13415629083":
+ case "18316120654":
+ case "15622703419":
+ case "18824864143":
+ case "464027401@qq.com":
+ case "2791308028@qq.com":
+ case "13697499568":
+ case "18666455392":
+ case "13375012446":
+ case "13602944661":
+ case "18778381374":
+ case "18316672920":
+ return;
+ }
- //鏂紑杩滅▼杩炴帴
- Control.Ins.IsRemote = false;
if (!UserInfo.Current.IsLogin)
{
return;
@@ -595,20 +576,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>
/// 鎺ㄩ�佹尋涓嬬嚎涓婚
@@ -640,11 +621,6 @@
}
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;
//message = Encoding.UTF8.GetBytes (PushSignStr);
@@ -673,27 +649,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>
@@ -708,18 +684,18 @@
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;
+ //}
}
}
--
Gitblit v1.8.0