From ea0b1e8e5f43c5fd0a7d479e25ede3b8cbea464a Mon Sep 17 00:00:00 2001 From: wxr <wxr@hdlchina.com.cn> Date: 星期一, 02 十二月 2024 17:17:19 +0800 Subject: [PATCH] tcp;可视对讲; --- HDL_ON/DAL/DriverLayer/Control.cs | 375 ++++++++++++++++++++++++++++++++-------------------- 1 files changed, 230 insertions(+), 145 deletions(-) diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs index f5a397b..103796e 100644 --- a/HDL_ON/DAL/DriverLayer/Control.cs +++ b/HDL_ON/DAL/DriverLayer/Control.cs @@ -111,7 +111,7 @@ { //淇敼涓婚〉杩炴帴鐘舵�� HomePage.LoadEvent_CheckLinkStatus(); - MainPage.Log($"缃戝叧灞�鍩熺綉鍦ㄧ嚎锛屽埛鏂拌澶囩姸鎬�"); + //MainPage.Log($"缃戝叧灞�鍩熺綉鍦ㄧ嚎锛屽埛鏂拌澶囩姸鎬�"); new System.Threading.Thread(() => { System.Threading.Thread.Sleep(1000); @@ -127,7 +127,7 @@ } else { - MainPage.Log($"鐘舵�佷竴鑷达紝涓嶆洿鏂版暟鎹�(鏈湴)"); + //MainPage.Log($"鐘舵�佷竴鑷达紝涓嶆洿鏂版暟鎹�(鏈湴)"); } } } @@ -178,7 +178,7 @@ while (true) { System.Threading.Thread.Sleep(500); - if (MqttClient.isSubscribeSuccess || count<1) + if (MqttClient.isSubscribeSuccess || count < 1) { break; } @@ -198,7 +198,8 @@ { MainPage.Log($"鐘舵�佷竴鑷达紝涓嶆洿鏂版暟鎹�(浜戠)"); } - }catch(Exception ex) + } + catch (Exception ex) { MainPage.Log($"Set GatewayCloudOnline Error:{ex.Message}"); } @@ -261,12 +262,13 @@ /// </summary> public void OpenTcpClent() { - return; if (myTcpClient == null) { - myTcpClient = new Control_TcpClient(reportIp); + myTcpClient = new Control_TcpClient(reportIp, 8586); } - myTcpClient.Connect(); + MainPage.Log("鎵撳紑tcp"); + myTcpClient.init(); + Ins.LoginGateway(); } @@ -276,8 +278,7 @@ public void SearchLoaclGateway() { //2021-01-15 : 浣忓畢娌℃湁缁戝畾缃戝叧鐨勬椂鍊欎笉鐢ㄦ悳绱紝骞朵笖涓嶈兘閾炬帴mqtt - if (DB_ResidenceData.Instance.HomeGateway == null || string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.gatewayId) || - !UserInfo.Current.IsLogin) + if (DB_ResidenceData.Instance.HomeGateway == null || string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.gatewayId)) { return; } @@ -292,11 +293,11 @@ } else if (MainPage.InternetStatus == 1) { - DAL.Mqtt.MqttClient.InitState(); + MqttClient.InitState(); } else if (MainPage.InternetStatus == 2) { - DAL.Mqtt.MqttClient.InitState(); + MqttClient.InitState(); OpenUdp(DB_ResidenceData.Instance.GatewayType == 0 ? 6000 : 8585); //閲嶇疆鎼滅储缃戝叧鏍囧織 IsSearchLocalGatewaySuccessful = false; @@ -328,7 +329,6 @@ } } - private System.Threading.Thread loginGatewayThread; /// <summary> @@ -336,49 +336,25 @@ /// </summary> public void LoginGateway() { - return;//tcp鎺у埗瀛樺湪闂锛屼絾鏄厛涓嶇敤tcp鎺у埗浜嗭紝瑕佺粡杩囨祴璇曞厛 2023-07-29 10:14:32 - if (loginGatewayThread == null) + if (loginGatewayThread == null && !LocalTcpClientLogin) { loginGatewayThread = new System.Threading.Thread(() => { - while (!Ins.myTcpClient.isConnected) + if (Ins.GatewayOnline_Local) { - if (Ins.GatewayOnline_Local && myTcpClient.isConnected) + while (!LocalTcpClientLogin) { var sendData = new { clientType = "app", version = "1.0" }; var sendJob = new { id = Control.Ins.msg_id.ToString(), time_stamp = Utlis.GetTimestamp(), objects = sendData }; - var bodyString = JsonConvert.SerializeObject(sendJob); - var sendBytes = ConvertSendBodyData($"/user/{GatewayId}/custom/gateway/login", bodyString); - - Ins.myTcpClient.SendMessage(sendBytes); + Ins.myTcpClient.CommSend(sendBytes, sendBytes.Length); + System.Threading.Thread.Sleep(1000); } - System.Threading.Thread.Sleep(2000); } - //loginGatewayThread?.Abort(); - //loginGatewayThread = null; - }); loginGatewayThread.Start(); } - else - { - try - { - loginGatewayThread?.Abort(); - } - catch (Exception ex) - { - MainPage.Log($"閲嶅惎鐧诲綍缃戝叧绾跨▼寮傚父:{ex.Message}"); - } - finally - { - loginGatewayThread = null; - LoginGateway(); - } - } - } @@ -404,7 +380,7 @@ } asd.status = status1; upDataObj.objects.Add(asd); - revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj); + revString = JsonConvert.SerializeObject(upDataObj); UpdataFunctionStatus(revString, null, true); } return; @@ -444,7 +420,7 @@ //濡傛灉鏄帶鍒惰皟鍏夌殑寮�鏃讹紝浜害鍊间笉鑳戒负0 - if (commandDictionary.Count > 2) + if (commandDictionary.Count >= 2) { if (commandDictionary.ContainsKey(FunctionAttributeKey.OnOff) && commandDictionary.ContainsKey(FunctionAttributeKey.Brightness)) { @@ -480,12 +456,12 @@ } asd.status = status1; upDataObj.objects.Add(asd); - revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj); + revString = JsonConvert.SerializeObject(upDataObj); UpdataFunctionStatus(revString, null, true); return true; } - //MainPage.Log($"鍙戦�佹暟鎹�:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}"); + //MainPage.Log($"鍙戦�佹暟鎹�:{JsonConvert.SerializeObject(commandDictionary)}"); ///绗笁鏂规秱楦﹁澶囩粺涓�浣跨敤杩滅▼鎺у埗 switch (function.spk) @@ -532,11 +508,11 @@ else { var functionControlDataObj = function.GetGatewayAlinkControlData(commandDictionary); - var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj); + var functionControlDataJson = JsonConvert.SerializeObject(functionControlDataObj); var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson); new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id, resend); MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}"); - //Ins.myTcpClient.SendMessage(sendBytes); + //Ins.myTcpClient.SendMessage(sendBytes); } } //杩滅▼閫氳 @@ -626,7 +602,7 @@ { foreach (var temp in functions) { - if((temp.trait_on_off.state.ToString() == "on" && open)|| temp.trait_on_off.state.ToString() == "off"&& !open) + if ((temp.trait_on_off.state.ToString() == "on" && open) || temp.trait_on_off.state.ToString() == "off" && !open) { continue; } @@ -664,7 +640,7 @@ if (pack != null && pack.Data != null) { //寰呮祴璇�2021-03-04 - var ddd = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AlinkStatusData>>(pack.Data.ToString()); + var ddd = JsonConvert.DeserializeObject<List<AlinkStatusData>>(pack.Data.ToString()); if (ddd != null) { foreach (var function in ddd) @@ -724,7 +700,7 @@ }, time_stamp = Utlis.GetTimestamp() }; - var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj); + var functionControlDataJson = JsonConvert.SerializeObject(readDataObj); var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson); MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}"); new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id); @@ -736,7 +712,8 @@ try { pm.RefreshDeviceStatus(new List<string>() { function.deviceId }); - }catch(Exception ex) + } + catch (Exception ex) { MainPage.Log($"杩滅▼璇诲彇璁惧鐘舵�佸紓甯�:{ex.Message}"); } @@ -806,7 +783,7 @@ objects = objects, time_stamp = Utlis.GetTimestamp() }; - var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj); + var functionControlDataJson = JsonConvert.SerializeObject(readDataObj); var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson); MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}"); new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id); @@ -850,7 +827,7 @@ }, time_stamp = Utlis.GetTimestamp() }; - var aLinkJson = Newtonsoft.Json.JsonConvert.SerializeObject(aLinkData); + var aLinkJson = JsonConvert.SerializeObject(aLinkData); var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlSeurity, aLinkJson); new Control_Udp().SendLocalHdlLinkData(sendBytes, aLinkData.id); } @@ -904,7 +881,7 @@ objects = objects, time_stamp = Utlis.GetTimestamp() }; - var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj); + var functionControlDataJson = JsonConvert.SerializeObject(readDataObj); var sendBytes = Ins.ConvertSendBodyData($"/base/{DB_ResidenceData.Instance.HomeGateway.gatewayId}/thing/service/MusicPlayGroupListGet/down", functionControlDataJson); MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}"); new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id); @@ -922,7 +899,7 @@ var sendId = Ins.msg_id.ToString(); var sendObj = new { objects = objects1, id = sendId, time_stamp = Utlis.GetTimestamp() }; - var aLinkJson = Newtonsoft.Json.JsonConvert.SerializeObject(sendObj); + var aLinkJson = JsonConvert.SerializeObject(sendObj); var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.AuthGateway, aLinkJson); new Control_Udp().SendLocalHdlLinkData(sendBytes, Ins.msg_id.ToString()); } @@ -936,14 +913,6 @@ /// <returns></returns> public byte[] ConvertSendBodyData(string topic, string bodyDataString, bool isEncryption = true) { - //string topicString = "Topic:" + topic + "\r\n"; - //byte[] bodyBytes = Encoding.ASCII.GetBytes(bodyDataString); - //string lengthString = "Length:" + bodyBytes.Length.ToString() + "\r\n" + "\r\n"; - - //string sendDataString = topicString + lengthString + bodyDataString; - //byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString); - //MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n"); - //*************************************************************** //2021-09-23 澧炲姞鏈湴閫氫俊鍔犲瘑澶勭悊 //1.鎷兼帴澶� @@ -954,8 +923,6 @@ if (isEncryption && IsLocalEncryptAndGetAesKey) { bodyBytes = Securitys.EncryptionService.AesEncryptPayload(bodyBytes, DB_ResidenceData.Instance.CurrentRegion.localSecret); - //bodyDataString = Encoding.UTF8.GetString(bodyBytes); - //MainPage.Log($"杞崲HDL-Link鏁版嵁 鍔犲瘑key锛�" + DB_ResidenceData.Instance.CurrentRegion.localSecret); } //3.鎷兼帴body鐨凩ength闀垮害鏁版嵁 string lengthString = "Length:" + bodyBytes.Length.ToString() + "\r\n" + "\r\n"; @@ -967,7 +934,6 @@ bodyBytes.CopyTo(sendDataBytes, topicAndLengthBytes.Length); var sendDataString = Encoding.UTF8.GetString(sendDataBytes); - MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n"); //*************************************************************** return sendDataBytes; @@ -978,10 +944,6 @@ /// <returns></returns> public void ConvertReceiveData(byte[] receiveBytes, string ip) { - if (!UserInfo.Current.IsLogin) - { - return; - } var reString = Encoding.UTF8.GetString(receiveBytes); AnalysisReceiveData(reString, receiveBytes, ip); } @@ -993,16 +955,12 @@ /// <returns></returns> public LocalCommunicationData AnalysisReceiveData(string receiveString, byte[] originalReceiveBytes, string sIp = null) { - LocalCommunicationData receiveObj = new LocalCommunicationData(); - - var res = receiveString.Split("\r\n\r\n"); if (res.Length == 2) { var topics = res[0].Split("\r\n"); - //MainPage.Log(res[1]); foreach (var ts in topics) { var key = ts.Split(":"); @@ -1017,20 +975,11 @@ } } - //MainPage.Log($"灞�鍩熺綉淇℃伅: {receiveObj.Topic} : 鍐呭: {res[1]}"); - - //楠岃瘉鏈夋晥鏁版嵁闀垮害 - //if (res[1].Length != receiveObj.Length) - //{ - // MainPage.Log($"鏀跺埌鏁版嵁鍖呴暱搴︿笉澶�"); - // return receiveObj; - //} receiveObj.BodyDataString = res[1]; + ///UDP涓嶅嚭tcp蹇冭烦鍖� if (receiveObj.Topic == CommunicationTopic.ct.HeartBeat + "_reply") { - //Ins.myTcpClient.ClearHeartBeatLog(); - MainPage.Log("tcp蹇冭烦鍥炲"); return null; } @@ -1051,61 +1000,49 @@ { var revString = Encoding.UTF8.GetString(receiveBytes); receiveObj.BodyDataString = revString; - MainPage.Log($"灞�鍩熺綉淇℃伅: 瑙e瘑鍚庯細" + receiveObj.BodyDataString); - //if (receiveObj.Topic.EndsWith("/thing/property/up")) - //{ - // MsgInfoList.Add(revString + "\r\n"); - //} } } - else - { - //鐩墠涓嶆嬁鍘熷Bytes鏁版嵁 瑙e瘑涓嶄簡 - //byte[] receiveBytes = Encoding.UTF8.GetBytes(res[1]); - //MainPage.Log($"灞�鍩熺綉淇℃伅 receiveBytes {receiveBytes.Length}"); - //receiveBytes = Securitys.EncryptionService.AesDecryptPayload(receiveBytes, DB_ResidenceData.Instance.CurrentRegion.localSecret); - //MainPage.Log($"灞�鍩熺綉淇℃伅 瑙e瘑鍚庯細receiveBytes {receiveBytes.Length}"); - //var revString = Encoding.UTF8.GetString(receiveBytes); - //receiveObj.BodyDataString = revString; - //MainPage.Log($"灞�鍩熺綉淇℃伅: 瑙e瘑鍚庯細" + receiveObj.BodyDataString); - } + } + } - } - else - { - MainPage.Log($"灞�鍩熺綉淇℃伅: 鏄庢枃锛�" + receiveObj.BodyDataString); - } + if (receiveObj.BodyDataString == null) + { + MainPage.Log($"UDP receiveObj.BodyDataString == null"); + return null; } try { - var idMsg = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]); + var idMsg = JsonConvert.DeserializeObject<ResponsePack>(receiveObj.BodyDataString); var hasProcess = hasItBeenProcessed(idMsg.id); if (hasProcess) { - return null; + if (receiveObj.Topic != CommunicationTopic.SearchLoaclGatewayReply) + { + //MainPage.Log($"UDP涓嶅鐞嗛噸澶嶆暟鎹�:{idMsg.id}"); + return null; + } } - MainPage.Log($"澶勭悊灞�鍩熺綉鏁版嵁id:{idMsg.id}"); - } catch (Exception ex) { - MainPage.Log($"瑙f瀽灞�鍩熺綉鏁版嵁寮傚父{ex.Message}"); + MainPage.Log($"瑙f瀽鏁版嵁寮傚父:{ex.StackTrace}\r\n<<-->>{receiveObj.BodyDataString}"); } + + MainPage.Log($"UDP澶勭悊鏁版嵁:Topic:{receiveObj.Topic}===Context====" + receiveObj.BodyDataString); if (receiveObj.Topic == CommunicationTopic.SearchLoaclGatewayReply || receiveObj.Topic == CommunicationTopic.GatewayBroadcast) { - - var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]); + var bodyJObj = JsonConvert.DeserializeObject<ResponsePack>(res[1]); if (bodyJObj == null) { return receiveObj; } - var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString()); + var device = JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString()); if (device.device_mac.ToUpper() == DB_ResidenceData.Instance.HomeGateway.mac.ToUpper()) { - MainPage.Log("鏈湴鎼滅储缃戝叧鎴愬姛"); + MainPage.Log("缃戝叧鏈湴鍦ㄧ嚎"); Ins.IsSearchLocalGatewaySuccessful = true; Ins.GatewayOnline_Local = true; if (!string.IsNullOrEmpty(device.gatewayId)) @@ -1123,21 +1060,17 @@ reportIp = device.ip_address;//涓绘挱鍦板潃涔熻兘鎺у埗璁惧//"239.0.168.188";// //2021-09-23 鏂板鑾峰彇褰撳墠缃戝叧鏄惁鏈湴鍔犲瘑 Ins.IsLocalEncrypt = device.isLocalEncrypt; - //MainPage.Log("缃戝叧鏈湴鍔犲瘑鐘舵�侊細" + device.local_encrypt.ToString()); - //鐧诲綍缃戝叧Tcp - //OpenTcpClent(); - + //鐧诲綍缃戝叧Tcp tcp杩炴帴缃戝叧 + OpenTcpClent(); } } else if (receiveObj.Topic == CommunicationTopic.ct.ReadStatus + "_reply" || - receiveObj.Topic == CommunicationTopic.ct.ControlFunctionTopic + "_reply" || - receiveObj.Topic == CommunicationTopic.ct.ControlGroupControlTopic + "_reply" || + receiveObj.Topic == CommunicationTopic.ct.ControlFunctionTopic + "_reply" || + receiveObj.Topic == CommunicationTopic.ct.ControlGroupControlTopic + "_reply" || receiveObj.Topic == CommunicationTopic.ct.GatewayUpStatus || receiveObj.Topic.Contains(CommunicationTopic.ct.GatewayUpSortTopic)) { - //TODO 鏆傛椂涓嶄紶姝g‘鐨勬暟鎹笂鍘伙紝濡傛灉鍚庨潰瑕佷紭鍖栧墠闈㈣繖浜涗唬鐮� - //Console.WriteLine($"{receiveObj.Topic}\r\n{receiveObj.BodyDataString}"); UpdataFunctionStatus(receiveObj.BodyDataString, null); } else if (receiveObj.Topic == CommunicationTopic.ct.ControlSeurity + "_reply" @@ -1146,11 +1079,10 @@ { try { - MainPage.Log($"灞�鍩熺綉瀹夐槻淇℃伅: {receiveObj.Topic} : 鍐呭: {res[1]}"); var tt = ""; lock (tt) { - var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<SecurityStatusObj>(receiveObj.BodyDataString); + var temp = JsonConvert.DeserializeObject<SecurityStatusObj>(receiveObj.BodyDataString); if (temp != null) { Control_Udp.ReceiveRepeatManager(temp.id, null); @@ -1175,7 +1107,7 @@ } else if (receiveObj.Topic == $"/user/{GatewayId}/custom/gateway/login_reply") { - var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(receiveObj.BodyDataString); + var temp = JsonConvert.DeserializeObject<JObject>(receiveObj.BodyDataString); if (temp.GetValue("objects").ToString().Contains("success")) { LocalTcpClientLogin = true; @@ -1203,6 +1135,128 @@ return receiveObj; } + public LocalCommunicationData AnalysisReceiveData(string topic, byte[] bodyBytes) + { + LocalCommunicationData receiveObj = new LocalCommunicationData(); + receiveObj.Topic = topic; + + if (receiveObj.Topic == CommunicationTopic.ct.HeartBeat + "_reply") + { + Ins.myTcpClient.ClearHeartBeatLog(); + MainPage.Log("tcp蹇冭烦鍥炲"); + return null; + } + + //2021-09-23 杩囨护涓嶉渶瑕佽В瀵嗙殑涓婚 鐩墠鎼滅储缃戝叧涓婚涓嶅姞瀵� + if (receiveObj.Topic != CommunicationTopic.SearchLoaclGatewayReply) + { + //鍒ゆ柇褰撳墠缃戝叧鏄惁寮�鍚簡鏈湴鍔犲瘑 + if (IsLocalEncryptAndGetAesKey) + { + byte[] receiveBytes = Securitys.EncryptionService.AesDecryptPayload(bodyBytes, DB_ResidenceData.Instance.CurrentRegion.localSecret); + if (receiveBytes != null) + { + receiveObj.BodyDataString = Encoding.UTF8.GetString(receiveBytes); + } + } + } + else + { + receiveObj.BodyDataString = Encoding.UTF8.GetString(bodyBytes); + } + + if (receiveObj.BodyDataString == null) + { + MainPage.Log($"TCP receiveObj.BodyDataString == null"); + return null; + } + + try + { + var idMsg = JsonConvert.DeserializeObject<ResponsePack>(receiveObj.BodyDataString); + var hasProcess = hasItBeenProcessed(idMsg.id); + if (hasProcess) + { + //MainPage.Log($"TCP涓嶅鐞嗛噸澶嶆暟鎹畕idMsg.id}"); + return null; + } + } + catch (Exception ex) + { + MainPage.Log($"瑙f瀽鏁版嵁寮傚父:{ex.StackTrace}\r\n<<-->>{receiveObj.BodyDataString}"); + } + MainPage.Log($"TCP澶勭悊鏁版嵁:Topic:{receiveObj.Topic}===Context====" + receiveObj.BodyDataString); + + + if (receiveObj.Topic == CommunicationTopic.ct.ReadStatus + "_reply" || + receiveObj.Topic == CommunicationTopic.ct.ControlFunctionTopic + "_reply" || + receiveObj.Topic == CommunicationTopic.ct.ControlGroupControlTopic + "_reply" || + receiveObj.Topic == CommunicationTopic.ct.GatewayUpStatus || + receiveObj.Topic.Contains(CommunicationTopic.ct.GatewayUpSortTopic)) + { + UpdataFunctionStatus(receiveObj.BodyDataString, null); + } + else if (receiveObj.Topic == CommunicationTopic.ct.ControlSeurity + "_reply" + || receiveObj.Topic == CommunicationTopic.ct.ReadSecurityStatus + "_reply" + || receiveObj.Topic == CommunicationTopic.ct.SecurityStatusUp) + { + try + { + var tt = ""; + lock (tt) + { + var temp = JsonConvert.DeserializeObject<SecurityStatusObj>(receiveObj.BodyDataString); + if (temp != null) + { + Control_Udp.ReceiveRepeatManager(temp.id, null); + foreach (var updataSecurity in temp.objects) + { + var updataLocalSecurity = FunctionList.List.securities.Find((obj) => obj.sid == updataSecurity.sid); + if (updataLocalSecurity != null) + { + updataLocalSecurity.status = updataSecurity.status; + updataLocalSecurity.alarm = updataSecurity.alarm; + ArmCenterPage.LoadEvent_RefreshSecurityStatus(updataLocalSecurity); + } + } + HomePage.LoadEvent_RefreshSecurityStatus(); + } + } + } + catch (Exception ex) + { + MainPage.Log($"瀹夐槻灞�鍩熺綉寮傚父锛歿ex.Message}"); + } + } + else if (receiveObj.Topic == $"/user/{GatewayId}/custom/gateway/login_reply") + { + var temp = JsonConvert.DeserializeObject<JObject>(receiveObj.BodyDataString); + if (temp.GetValue("objects").ToString().Contains("success")) + { + LocalTcpClientLogin = true; + try + { + loginGatewayThread?.Abort(); + } + catch (Exception ex) + { + MainPage.Log($"缁堟鐧诲綍缃戝叧tcp寮傚父锛歿ex.Message}"); + } + finally + { + loginGatewayThread = null; + } + MainPage.Log("灞�鍩熺綉tcp杩炴帴鐧诲綍缃戝叧鎴愬姛"); + } + } + else + { + //涓�浜涚壒娈婄殑涓婚澶勭悊(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣�) + Stan.HdlCloudReceiveLogic.Current.CloudOverallMsgReceiveEx(receiveObj.Topic, receiveObj.BodyDataString); + } + return receiveObj; + } + private List<string> processedDataList = new List<string>(); /// <summary> @@ -1211,19 +1265,22 @@ /// <returns></returns> private bool hasItBeenProcessed(string msgId) { - if (processedDataList.Contains(msgId)) + lock (processedDataList) { - return true; - } - else - { - if (processedDataList.Count > 50) + if (processedDataList.Contains(msgId)) { - processedDataList.RemoveAt(0); + return true; } - return false; + else + { + processedDataList.Add(msgId); + if (processedDataList.Count > 50) + { + processedDataList.RemoveAt(0); + } + return false; + } } - } @@ -1304,7 +1361,7 @@ { if (FunctionList.List.OtherBrandFunction.Count == 0) { - MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�..."); + //MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�..."); return; } else @@ -1321,7 +1378,6 @@ { continue; } - MainPage.Log(localFunction.name); //if (SPK.MusicSpkList().Contains(localFunction.spk)) //{ @@ -1332,14 +1388,14 @@ // return; // } //} - MainPage.Log($"鏀跺埌鏁版嵁:{revString}"); + //MainPage.Log($"鏀跺埌鏁版嵁:{revString}"); foreach (var attr in updateTemp.status) { localFunction.time_stamp = temp.time_stamp; localFunction.SetAttrState(attr.key, attr.value); - + } - if(localFunction.spk == SPK.AirSwitchP3) + if (localFunction.spk == SPK.AirSwitchP3) { localFunction.online = updateTemp.online; } @@ -1347,7 +1403,7 @@ { localFunction.updateTime = DateTime.Now; } - + //鏇存柊鐣岄潰鐘舵�� switch (localFunction.spk) @@ -1359,6 +1415,13 @@ AcstParentPage.UpdateAcstSubInfo(localFunction); AcstSubPage.UpdateStatus(localFunction); break; + //case SPK.WaterHeaterJinmao: + // AcstParentPage.UpdateAcstSubInfo(localFunction); + // WaterHeaterJinmaoPage.UpdateStatus(); + // break; + //case SPK.InverterJinmao: + // InverterJinmaoPage.UpdateStatus(localFunction); + // break; case SPK.AirSwitch: AirSwitchPage.UpdataState(localFunction); if (localFunction.GetAttribute(FunctionAttributeKey.Power) != null)//濡傛灉鏄甫鐢甸噺鐨勭┖寮�涔熻鏇存柊鑳芥簮鐣岄潰 @@ -1425,6 +1488,7 @@ break; case SPK.AcStandard: case SPK.HvacAC: + case SPK.HvacAcPanel: case SPK.AcIr: Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status); if (localFunction != null) @@ -1468,6 +1532,7 @@ } break; case SPK.HvacFloorHeat: + case SPK.HvacFloorHeatPanel: case SPK.FloorHeatStandard: localFunction.lastState = ""; switch (localFunction.GetAttrState(FunctionAttributeKey.Mode)) @@ -1510,7 +1575,8 @@ EnvironmentalPage.LoadEvent_UpdataStatus(localFunction); //A_EnvironmentalDataCenter.LoadEvent_UpdataStatus(localFunction); break; - case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin: + case SPK.SensorEnvironment: + case SPK.SensorEnvironmentHailin: case SPK.SensorEnvironment2: case SPK.SensorEnvironment3: if (localFunction.GetAttributes().Contains(FunctionAttributeKey.Temperature)) @@ -1558,7 +1624,7 @@ var tempPirStatus = localFunction.attributes.Find((sta) => sta.key == "people_status"); if (tempPirStatus != null) { - if(tempPirStatus.state == "true") + if (tempPirStatus.state == "true") { localFunction.lastState = Language.StringByID(StringId.Someone); } @@ -1617,11 +1683,30 @@ case SPK.MusicStandard: //UI.Music.MusicMain.mMusicMain.RefreshView(updateTemp); Console.WriteLine("闊充箰鎾斁鍣ㄦ樉绀虹姸鎬�=======" + revString); + foreach (var music in UI.Music.A31MusicModel.A31MusicModelList)//姣忔鏀跺埌鏁版嵁閮借鏇存柊涓�涓嬫椂闂� + { + if (music.functionMusic.sid == localFunction.sid) + { + music.LastDateTime = DateTime.Now; + } + } + if (UI.Music.A31MusicModel.Current != null) + { + UI.Music.A31MusicModel.Current.LastDateTime = DateTime.Now; + } //wjc break; + //case SPK.Inverter: + //case SPK.InverterRst: + // var status = new Dictionary<string, object> { ["method"] = "status", ["data"] = temp.objects }; + // Application.RunOnMainThread(() => + // { + // Inverter.Ins.H5Page.CallJS($"nativeToJs(\'{JsonConvert.SerializeObject(status)}\')"); + // }); + // break; } - + HomePage.UpdataFunctionStates(localFunction); RoomPage.UpdataStates(localFunction); FunctionPage.UpdataStates(localFunction); @@ -1649,7 +1734,7 @@ { Dictionary<string, string> dic = new Dictionary<string, string>(); var functionControlDataObj = doorlock.GetGatewayAlinkDoorlockData(UserInfo.Current.ID, extStr); - var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj); + var functionControlDataJson = JsonConvert.SerializeObject(functionControlDataObj); var sendBytes = Ins.ConvertSendBodyData($"/base/{Control.Ins.GatewayId}/thing/service/doorRemoteOpen/down", functionControlDataJson); new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id, 0); } @@ -1682,7 +1767,7 @@ var pack = HttpUtil.RequestHttpsPost("/home-wisdom/app/device/door/pwdConfirm", requestJson); if (pack.Code == StateCode.SUCCESS) { - Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(pack.Data.ToString()); + JObject pairs = JObject.Parse(pack.Data.ToString()); var scrip = pairs.GetValue("scrip"); d = new Dictionary<string, object>(); -- Gitblit v1.8.0