From bd46c57c77c276014db3192a4e2cc96e23c93202 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期五, 21 二月 2020 13:08:47 +0800 Subject: [PATCH] 先上传个版本吧 --- ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs | 89 +++++++++++++++++++++++++++++++------------- 1 files changed, 63 insertions(+), 26 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs index dffdf80..36c1d58 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> @@ -3229,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) { @@ -3271,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"]; @@ -3323,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; } @@ -3367,6 +3382,18 @@ 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 RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + Config.Instance.ConnEmqClientId + "/Push/NotifySqueeze"); + await initGateWayBaseInfomation(); Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.Remote); //娌℃湁涓荤綉鍏虫椂涓诲姩璇诲彇锛岃幏鍙栦富缃戝叧淇℃伅 @@ -3421,7 +3448,9 @@ ["RequestVersion"] = CommonPage.RequestVersion, ["RequestSource"] = 0, ["LoginAccessToken"] = Config.Instance.Token, - ["RequestProtocolType"] = 0 + ["RequestProtocolType"] = 0, + ["PlatformStr"] = "h",//杩欎袱涓�煎鏋滀笉璁剧疆,鍒欎簯绔笉鍙戝竷涓婚 + ["PublishPayloadJsonStr"] = "1" }; var bytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(jsonData)); result = await CommonPage.Instance.DoRequestZigbeeHttpsInterface("https://global.hdlcontrol.com/HangZhouHdlCloudApi/EmqMqtt/GetConnMqttInfo", bytes, Config.Instance.Token); @@ -3436,7 +3465,9 @@ ["LoginAccessToken"] = Config.Instance.Token, ["RequestProtocolType"] = 0, ["MainUserDistributedMark"] = Config.Instance.Home.MainUserDistributedMark, - ["HomeId"] = Config.Instance.Home.Id + ["HomeId"] = Config.Instance.Home.Id, + ["PlatformStr"] = "h",//杩欎袱涓�煎鏋滀笉璁剧疆,鍒欎簯绔笉鍙戝竷涓婚 + ["PublishPayloadJsonStr"] = "1" }; var bytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(jsonData)); result = await CommonPage.Instance.DoRequestZigbeeHttpsInterface("https://global.hdlcontrol.com/HangZhouHdlCloudApi/EmqMqtt/ShareMemberConnMqttInfo", bytes, Config.Instance.Token); @@ -3444,6 +3475,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) { @@ -3451,6 +3488,8 @@ var connEmqClientId = responseData["ConnEmqClientId"]?.ToString(); var connEmqUserName = responseData["ConnEmqUserName"]?.ToString(); var connEmqPwd = responseData["ConnEmqPwd"]?.ToString(); + //璁板綍璧峰綋鍓嶇殑瀹㈡埛绔疘D + Config.Instance.ConnEmqClientId = connEmqClientId; var connEmqDomainPorts = connEmqDomainPort.Replace("//", "").Split(':'); var domain = connEmqDomainPorts[1]; @@ -3496,7 +3535,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,7 +3556,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) { @@ -3851,7 +3892,10 @@ epoint = topic.Split('/')[3]; cluID = topic.Split('/')[4]; attrId = topic.Split('/')[5]; - } + } + + //鍏ㄥ眬鎺ユ敹缃戝叧鎺ㄩ�佺殑鐨勯�昏緫(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣�) + Shared.Phone.UserCenter.HdlGatewayReceiveLogic.Current.GatewayOverallMsgReceive(gatewayID, topic, reportStatus, message); var gwa = GateWayList.Find(obj => obj.getGatewayBaseInfo.gwID == gatewayID); if (gwa == null) @@ -3883,9 +3927,6 @@ { jobject = Newtonsoft.Json.Linq.JObject.Parse(message); } - - //鍏ㄥ眬鎺ユ敹缃戝叧鎺ㄩ�佺殑鐨勯�昏緫(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣�) - Shared.Phone.UserCenter.HdlGatewayReceiveLogic.Current.GatewayOverallMsgReceive(gatewayID, topic, reportStatus, jobject); #region 杩滅▼,涓荤綉鍏充笂鎶ラ�氱煡 if (IsRemote) @@ -4329,22 +4370,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