From 34e965100d635346e2d4cd6e6013bdaed66b3004 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期四, 02 一月 2020 19:52:13 +0800
Subject: [PATCH] 2019.1.2-3
---
ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs | 76 ++++++++++++++++++++++++++-----------
1 files changed, 53 insertions(+), 23 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
index dffdf80..513c248 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>
@@ -95,7 +101,7 @@
}
}
- #region variable
+ #region variable
/// <summary>
/// 杩滅▼杩炴帴鎴愬姛鏃剁殑鏃堕棿
/// </summary>
@@ -218,6 +224,7 @@
/// <para>绗竴涓弬鏁帮細濡傛灉涓� DDevice/IsGetEpointInfo:鏈夋柊璁惧鍔犲叆zigbee缃戠粶鍙嶉</para>璁惧璇锋眰APP鑾峰彇鍗囩骇鏁版嵁
/// <para>绗竴涓弬鏁帮細濡傛灉涓� Device/DeviceJoinZbNet:鑾峰彇鏂拌澶囨墍鏈夌鐐逛俊鎭槸鍚︽垚鍔熷弽棣�</para>
/// <para>绗竴涓弬鏁帮細濡傛灉涓� DeviceRequestAcUpdateData: 璁惧璇锋眰绌鸿皟鍙戝崌绾ф暟鎹�</para>
+ /// "宸茬粡閫氱煡");//宸茬粡閫氱煡");
/// </summary>
[Newtonsoft.Json.JsonIgnore]
public Action<string, object> ReportAction;
@@ -3229,6 +3236,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)
{
@@ -3271,11 +3283,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"];
@@ -3311,7 +3325,7 @@
/// 杩滅▼MqttClient
/// </summary>
public static IMqttClient RemoteMqttClient= new MqttFactory().CreateMqttClient();
- static bool remoteIsConnected;
+ static bool remoteIsConnected;
private int IsLogin = 0;
[Newtonsoft.Json.JsonIgnore]
static Action actionTemp;
@@ -3323,10 +3337,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;
}
@@ -3367,6 +3383,16 @@
RemoteMqttClient.UseConnectedHandler(async (e) =>
{
DebugPrintLog($"杩滅▼杩炴帴鎴愬姛");
+
+ if (Config.Instance.Home.IsOthreShare == true)
+ {
+ //璁㈤槄涓�涓垚鍛樿鍒犻櫎鐨勪富棰�
+ string myGuid = Config.Instance.Guid;
+ await RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + myGuid + "/Push/Deleted");
+ //璁㈤槄涓�涓垎浜暟鎹凡缁忓彉鏇寸殑涓婚
+ await RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + myGuid + "/Push/DeletedShareData");
+ }
+
await initGateWayBaseInfomation();
Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.Remote);
//娌℃湁涓荤綉鍏虫椂涓诲姩璇诲彇锛岃幏鍙栦富缃戝叧淇℃伅
@@ -3444,6 +3470,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)
{
@@ -3496,7 +3528,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)
@@ -3516,10 +3549,11 @@
{
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) {
+ catch(Exception e) {
DebugPrintLog($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
}
}
@@ -4329,22 +4363,18 @@
#region 璁惧璇锋眰APP鑾峰彇鍗囩骇鏁版嵁
else if (topic == gatewayID + "/" + "ZbDataPassthrough")
{
- var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
- gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString());
- if (gatewayTemp.clientDataPassthroughResponseData == null)
- {
- return;
- }
-
//涓婃姤绫诲瀷閫氱煡
if (gwa.ReportAction != null)
- {
- DebugPrintLog("DeviceRequestAcUpdateData");
- gwa.ReportAction("DeviceRequestAcUpdateData", gatewayTemp.clientDataPassthroughResponseData);
+ {
+ var clientDataPassthrough = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString());
+ if (clientDataPassthrough != null)
+ {
+ DebugPrintLog("DeviceRequestAcUpdateData");
+ gwa.ReportAction("DeviceRequestAcUpdateData", clientDataPassthrough);
+ }
}
}
#endregion
- DebugPrintLog("缃戝叧杩斿洖鏁版嵁閫氱煡");
}
catch (Exception ex)
{
--
Gitblit v1.8.0