From 5986f63b75bd81c6cef262c670e9251c038cbf5d Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期二, 17 十二月 2019 17:21:07 +0800
Subject: [PATCH] 合并一个版本
---
ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs | 98 +++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 86 insertions(+), 12 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
index 695486f..0b5fc0d 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
@@ -60,6 +60,12 @@
/// <value><c>true</c> if is remote; otherwise, <c>false</c>.</value>
public static bool IsRemote;
+ /// <summary>
+ /// 鏄惁鎷ユ湁杩滅▼杩炴帴鐨勬潈闄�
+ /// </summary>
+ [Newtonsoft.Json.JsonIgnore]
+ public static bool AllowRemoteCtrl = true;
+
/// <summary>
/// 缃戝叧淇濆瓨璺緞
/// </summary>
@@ -603,7 +609,8 @@
var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 82 } };
var data = new JObject { { "HomeId", homeId }, { "AccountId", accountId } };
jObject.Add("Data", data);
- Send("GwSetHomeId", jObject.ToString());
+ //浣忓畢ID鐨勮缃�,鍥哄畾浣跨敤灞�鍩熺綉,涓嶅瓨鍦ㄨ繙绋嬬殑璇存硶
+ SendLocation("GwSetHomeId", System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
}
catch { }
@@ -3228,6 +3235,11 @@
/// <returns></returns>
static async System.Threading.Tasks.Task initGateWayBaseInfomation()
{
+ if (AllowRemoteCtrl == false)
+ {
+ //娌℃湁杩滅▼杩炴帴鐨勬潈闄�
+ return;
+ }
string loginToken = Config.Instance.Token;
if (Config.Instance.Home.IsOthreShare == true)
{
@@ -3270,11 +3282,13 @@
var statuCode = jobject["StateCode"].ToString();
if (statuCode != "Success")
{
- //Log鍑哄姏
- Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(-1, "鎺ュ彛璁块棶澶辫触鈽咃細App/GetSingleHomeGatewayPagger " + statuCode);
//搴忓垪鍖栧璞�
var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(pra2);
- Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(-1, "鍙傛暟锛歕r\n" + requestJson);
+ //Log鍑哄姏
+ string errorMsg = "鎺ュ彛璁块棶澶辫触鈽咃細App/GetSingleHomeGatewayPagger " + statuCode + "\r\n";
+ errorMsg += "鍙傛暟锛歕r\n" + requestJson;
+ Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(-1, errorMsg);
+ return;
}
var responseData = jobject["ResponseData"];
@@ -3322,10 +3336,12 @@
/// <param name="brokerName">Broker name.</param>
public static async System.Threading.Tasks.Task StartRemoteMqtt()
{
- if (remoteMqttIsConnecting
- || !Shared.Common.Config.Instance.IsLogin
- || Shared.Common.Config.Instance.HomeId == ""
- || remoteIsConnected)
+ //杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺
+ if (AllowRemoteCtrl == false
+ || remoteMqttIsConnecting
+ || !Shared.Common.Config.Instance.IsLogin
+ || Shared.Common.Config.Instance.HomeId == ""
+ || remoteIsConnected)
{
return;
}
@@ -3443,6 +3459,12 @@
if (result != null)
{
var jobject = Newtonsoft.Json.Linq.JObject.Parse(Encoding.UTF8.GetString(result));
+ if (jobject["StateCode"].ToString() == "NotAllowRemoteCtrl")
+ {
+ //娌℃湁杩滅▼杩炴帴鐨勬潈闄�
+ AllowRemoteCtrl = false;
+ return;
+ }
var responseData = jobject["ResponseData"];
if (responseData != null)
{
@@ -3495,7 +3517,8 @@
{
localIsConnected = false;
DebugPrintLog($"Local涓诲姩鏂紑_{s}");
- await localMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
+ //await localMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
+ await localMqttClient.DisconnectAsync();
}
}
catch (Exception ex)
@@ -3515,7 +3538,8 @@
{
remoteIsConnected = false;
DebugPrintLog($"Remote涓诲姩鏂紑_{s}");
- await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
+ //await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
+ await RemoteMqttClient.DisconnectAsync();
}
}
catch(Exception e) {
@@ -3631,6 +3655,7 @@
await StartLocalMqtt("ReConnect");
if (localIsConnected)
{
+ DebugPrintLog($"灞�鍩熺綉鈥斺�斾簩娆″彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId} 鏄惁鍔犲瘑:{IsEncry}");
await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
}
}
@@ -3657,8 +3682,58 @@
return;
}
await Send(topic, System.Text.Encoding.UTF8.GetBytes(message), retain);
+ }
+
+ /// <summary>
+ /// 寮哄埗鎸囧畾浣跨敤鏈湴灞�鍩熺綉鍙戦�佹秷鎭埌鏈嶅姟鍣�
+ /// </summary>
+ /// <returns></returns>
+ /// <param name="topic"></param>
+ /// <param name="message"></param>
+ /// <param name="retain"></param>
+ public async Task SendLocation(string topic, byte[] message, bool retain = false)
+ {
+ try
+ {
+ if (Shared.Common.Config.Instance.HomeId == "")
+ {
+ return;
+ }
+
+ DebugPrintLog($"灞�鍩熺綉鈥斺�斿彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId} 鏄惁鍔犲瘑:{IsEncry}");
+
+ if (IsEncry)
+ {
+ //鏂囦欢娴佷笉鐢ㄥ姞瀵�
+ if (topic != "FileTransfer/SendFile")
+ {
+ message = SecuritySet.AesEncryptBytes(message, password);
+ }
+ }
+ if (localIsConnected)
+ {
+ try
+ {
+ await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
+ }
+ catch (Exception e)
+ {
+ DebugPrintLog($"Local涓诲姩鏂紑_{e.Message}");
+ await DisConnectLocalMqttClient(e.Message);
+ await StartLocalMqtt("ReConnect");
+ if (localIsConnected)
+ {
+ DebugPrintLog($"灞�鍩熺綉鈥斺�斾簩娆″彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId} 鏄惁鍔犲瘑:{IsEncry}");
+ await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ DebugPrintLog($"Send:{ex.Message}");
+ }
}
-
[Serializable]
public class CloudTimeResponse
@@ -4292,7 +4367,6 @@
}
}
#endregion
- DebugPrintLog("缃戝叧杩斿洖鏁版嵁閫氱煡");
}
catch (Exception ex)
{
--
Gitblit v1.8.0