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 | 147 ++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 134 insertions(+), 13 deletions(-)
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 67ce672..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
{
@@ -197,10 +198,38 @@
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[] {
- pirStatus,
+ pirStatus,pirStudy,
+ appDeviceRefresh,appHomeRefresh,appRoomRefresh,
topicFilterPush2, topicAlinkStatus });
if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
{
@@ -229,6 +258,10 @@
{
return;
}
+ if (DB_ResidenceData.Instance.CurrentRegion == null || DB_ResidenceData.Instance.CurrentRegion.RegionID == null)
+ {
+ return;
+ }
//杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺
if (RemoteMqttIsConnecting || remoteIsConnected)
@@ -238,7 +271,7 @@
Utlis.WriteLine($"StartCloudMqtt: 寮�濮�");
- await Task.Factory.StartNew(async () => {
+ await Task.Factory.StartNew((Func<Task>)(async () => {
try
{
#region 鍒濆鍖栬繙绋婱qtt
@@ -250,7 +283,7 @@
if (RemoteMqttClient.ApplicationMessageReceivedHandler == null)
{
//澶勭悊鎺ユ敹鍒扮殑鏁版嵁
- RemoteMqttClient.UseApplicationMessageReceivedHandler((e) => {
+ RemoteMqttClient.UseApplicationMessageReceivedHandler((Action<MqttApplicationMessageReceivedEventArgs>)((e) => {
try
{
var topic = e.ApplicationMessage.Topic;
@@ -280,6 +313,12 @@
}
}
+ //涓�浜涚壒娈婄殑涓婚澶勭悊(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣� 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);
@@ -291,22 +330,104 @@
{
var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
var revString = Encoding.UTF8.GetString(bytes);
- HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.addcontronsid = revString;
- //ReceiveCheckGateway(ss);
- //return;
+ HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString;
}
+ //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡
+ else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/irCodeStudyDone/up")
+ {
+ 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)
+ {
+ MainPage.Log($"璇诲彇鎴块棿淇℃伅鎴愬姛");
+ var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<SpatialApiPack>(roomResult.Data.ToString());
+ if (revData == null)
+ {
+ revData = new SpatialApiPack();
+ }
+ {
+ SpatialInfo.CurrentSpatial.UpdateSpatialList(revData.list);
+ }
+ }
+ else
+ {
+ 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);
+ Control.Ins.UpdataFunctionStatus(revString, null, true);
}
//涓�绔彛鏁版嵁瑙f瀽
else
{
//SetGatewayOnlineResetCheck();
- var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
+ //var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
//bus鏁版嵁瑙f瀽
var packet = new Packet();
@@ -322,7 +443,7 @@
}
}
catch { }
- });
+ }));
}
//(2)DisconnectedHandler
@@ -373,7 +494,7 @@
Utlis.WriteLine($"StartCloudMqtt: 缁撴潫");
}
- });
+ }));
}
@@ -460,7 +581,7 @@
MqttInfoConfig.Current.Save();
-
+
mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey;
//瑙e瘑瀵嗛挜瑙勫垯锛氬凡鐜版湁鐨勪綇瀹匢D涓哄熀鍑�,浠庡彸杈逛竴涓�鑾峰彇鍊�,鏈�鍚庡鏋滀笉澶�16浣�,鍒欏線鍙宠ˉ闆�
string aesKey = string.Empty;
@@ -548,7 +669,7 @@
/// </summary>
static void ReceiveNotifySqueezeAsync(string mMes)
{
- if (mMes == PushSignStr ) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊//鎴栬�呭綋鍓嶄笉鏄繙绋嬮摼鎺ョ姸鎬�
+ if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊//鎴栬�呭綋鍓嶄笉鏄繙绋嬮摼鎺ョ姸鎬�
//娴嬭瘯璐﹀彿锛屼笉鎸や笅绾�
switch (UserInfo.Current.AccountString)
{
@@ -866,4 +987,4 @@
}
-}
+}
\ No newline at end of file
--
Gitblit v1.8.0