From c13f6763177758c545f1a29410e2274861a312d1 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期四, 01 四月 2021 09:16:53 +0800
Subject: [PATCH] 2021-4-1-2
---
HDL_ON/DAL/Mqtt/MqttClient.cs | 464 ++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 305 insertions(+), 159 deletions(-)
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 1606485..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
{
@@ -20,6 +21,7 @@
/// 鍔犲瘑閫氳KEY
/// </summary>
static string mqttEncryptKey = "";
+ static string tuyaEncryptKey = "";
//static string checkGatewayTopicBase64 = "";
static bool hadGateway = true;
/// <summary>
@@ -32,18 +34,18 @@
/// </summary>
static string RandomKey = "";
+ /// <summary>
+ /// 闅忔満鐢熸垚瀛楃
+ /// </summary>
+ /// <returns></returns>
static string GetRandomKey()
{
if (string.IsNullOrEmpty(RandomKey))
{
//闅忔満2浣嶅瓧绗︿覆
- Random random = new Random(Guid.NewGuid().GetHashCode());
- int num = random.Next(65, 91);
- RandomKey = Convert.ToChar(num).ToString();
+ RandomKey = Utlis.CreateRandomString(2);
}
-
return RandomKey;
-
}
/// <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}");
}
}
@@ -132,14 +129,17 @@
static void InitMqtt()
{
new System.Threading.Thread(async () => {
- while (hadGateway)
+ while (true)
{
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();
@@ -160,44 +160,81 @@
}
static bool isSubscribeSuccess;
+ /// <summary>
+ /// 璁㈤槄涓婚
+ /// </summary>
+ /// <returns></returns>
static async Task SubscribeTopics()
{
if (remoteIsConnected && !isSubscribeSuccess)
{
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.RegionID}/app/thing/property/send",
QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
};
+ //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[] { topicFilterBusGateWayToClient, topicFilterPush2 , topicAlinkStatus });
+ 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;
Utlis.WriteLine("璁㈤槄鎴愬姛锛�");
-
- MqttRemoteSend(new byte[] { 0 }, 3);
-
- //杩炴帴鎴愬姛鍚庢娴嬫槸鍚﹂渶瑕侀�氳繃杩滅▼鑾峰彇Key
- //CheckIfNeedGetLocalPasswordFromRemote();
}
}
catch (Exception ex)
@@ -221,6 +258,10 @@
{
return;
}
+ if (DB_ResidenceData.Instance.CurrentRegion == null || DB_ResidenceData.Instance.CurrentRegion.RegionID == null)
+ {
+ return;
+ }
//杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺
if (RemoteMqttIsConnecting || remoteIsConnected)
@@ -230,7 +271,7 @@
Utlis.WriteLine($"StartCloudMqtt: 寮�濮�");
- await Task.Factory.StartNew(async () => {
+ await Task.Factory.StartNew((Func<Task>)(async () => {
try
{
#region 鍒濆鍖栬繙绋婱qtt
@@ -242,61 +283,167 @@
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:娌℃湁鎵ц鐗规畩澶勭悊)
+ if (Stan.HdlCloudReceiveLogic.Current.CloudOverallMsgReceiveEx(topic, e.ApplicationMessage.Payload, mqttEncryptKey, tuyaEncryptKey) == true)
+ {
+ 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")
+ //App璁㈤槄绾㈠瀹�/缃戝叧閬ユ帶鍣ㄦ坊鍔犳垚鍔熼�氱煡
+ else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/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.Method.controldata = revString;
}
- else
+ //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡
+ else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/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.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)
{
- 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);
}
- packet.Manager();
}
else
{
- //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.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);
+ }
+ //涓�绔彛鏁版嵁瑙f瀽
+ else
+ {
+ //SetGatewayOnlineResetCheck();
+ //var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
+ //bus鏁版嵁瑙f瀽
+ 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();
}
}
catch { }
- });
+ }));
}
//(2)DisconnectedHandler
@@ -311,32 +458,15 @@
//(3)ConnectedHandler
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();
- }
+ RemoteMqttClient.UseConnectedHandler(async (e) =>
+ {
IfNeedReadAllDeviceStatus = true;
+ Control.Ins.GatewayOnline_Cloud = true;
Utlis.WriteLine($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
SendPushSignOut();
});
}
#endregion
- //}
//(4)===========寮�濮嬭繛鎺ヨ繃绋�==========
//涔嬪墠宸茬粡鑾峰彇鍙傛暟鎴愬姛杩�
@@ -364,7 +494,7 @@
Utlis.WriteLine($"StartCloudMqtt: 缁撴潫");
}
- });
+ }));
}
@@ -412,11 +542,6 @@
/// <returns></returns>
static async Task StartMQTTGetInfo()
{
- if (!Control.Ins.IsRemote)
- {
- return;
- }
-
await GetMqttInfoAndMQTTConnectAsync();
////--鍒ゆ柇鏄綋鍓嶆槸鍚﹀垎浜殑浣忓畢
@@ -435,13 +560,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
{
@@ -459,7 +580,18 @@
MqttInfoConfig.Current.IfGetMqttInfoSuccess = true;
MqttInfoConfig.Current.Save();
+
+
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--)
+ {
+ aesKey += DB_ResidenceData.Instance.CurrentRegion.RegionID[i].ToString();
+ if (aesKey.Length == 16) { break; }
+ }
+ aesKey = aesKey.PadRight(16, '0');
+ tuyaEncryptKey = aesKey;
var options1 = new MQTTnet.Client.Options.MqttClientOptionsBuilder()
.WithClientId(clientId)
@@ -515,12 +647,11 @@
{
try
{
- SetGatewayOnlineResetCheck();
- if (Control.Ins.IsRemote)
+ //SetGatewayOnlineResetCheck();
+ if (Control.Ins.GatewayOnline_Cloud)
{
CheckIfNeedReadAllDeviceStatus();
}
-
}
catch { }
}
@@ -530,25 +661,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 DEBUG
- return;
-#endif
- 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;
@@ -556,7 +695,12 @@
DisConnectRemoteMqttClient("鎸や笅绾�");
- HDLCommon.Current.CheckLogout();
+ Application.RunOnMainThread(() =>
+ {
+ //寮圭獥鎻愮ず琚尋涓嬬嚎
+ HDLCommon.Current.CheckLogout();
+ });
+
//UserInfo.Current.LastTime = DateTime.MinValue;
//UserInfo.Current.SaveUserInfo();
@@ -570,20 +714,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>
/// 鎺ㄩ�佹尋涓嬬嚎涓婚
@@ -602,8 +746,6 @@
/// <returns></returns>
public static async Task MqttRemoteSend(byte[] message, int optionType = 0)
{
- //return;
-
try
{
string topicName;
@@ -616,11 +758,6 @@
message = Securitys.EncryptionService.AesEncryptPayload(message, mqttEncryptKey);
}
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;
@@ -649,19 +786,28 @@
/// 鏄惁闇�瑕佽鍙栦竴娆℃墍鏈夎澶囩姸鎬�
/// </summary>
static bool IfNeedReadAllDeviceStatus = true;
- //public static bool IsGatewayOnline = true;
- /// <summary>
- /// 璁剧疆缃戝叧鍦ㄧ嚎鏍囧織锛屽苟閲嶇疆CheckGateway鍙傛暟
- /// </summary>
- static void SetGatewayOnlineResetCheck()
- {
- if (Control.Ins.IsRemote)
- {
- if (!Control.Ins.GatewayOnline)
- Control.Ins.GatewayOnline = 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>
@@ -676,18 +822,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;
+ //}
}
}
@@ -841,4 +987,4 @@
}
-}
+}
\ No newline at end of file
--
Gitblit v1.8.0