From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期三, 01 十二月 2021 16:32:57 +0800
Subject: [PATCH] 2021-12-01-01

---
 HDL_ON/DAL/DriverLayer/Control.cs |   49 +++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index 4b93d06..be5293d 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -38,6 +38,11 @@
                 return _control;
             }
         }
+        /// <summary>
+        /// 璁板綍鎺ユ敹鍒扮殑娑堟伅锛屾柟渚縵b鐨勫伐绋嬪笀璋冭瘯浠栦滑鐨勮澶�
+        /// </summary>
+        public List<string> MsgInfoList = new List<string>();
+
         int _msg_id = 1;
         /// <summary>
         /// 閫氳ID
@@ -279,6 +284,7 @@
                         else if (DB_ResidenceData.Instance.GatewayType == 1)
                         {
                             new Control_Udp().SearchLocalGateway();
+                            new Control_Udp().SearchLocalGateway(true);
                         }
                         System.Threading.Thread.Sleep(500);
                     }
@@ -353,7 +359,7 @@
         /// <param name="function"></param>
         /// <param name="useRemote">鏄惁鐩存帴浣跨敤杩滅▼鍙戦��</param>
         /// <returns></returns>
-        public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary, bool useRemote = false)
+        public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary, bool useRemote = false,int resend = 3)
         {
             function.controlCounter++;
             function.refreshTime = DateTime.Now;
@@ -450,7 +456,7 @@
                         var functionControlDataObj = function.GetGatewayAlinkControlData(commandDictionary);
                         var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj);
                         var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
-                        new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id);
+                        new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id,resend);
                         MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
                     }
                 }
@@ -698,9 +704,24 @@
                 };
                 var aLinkJson = Newtonsoft.Json.JsonConvert.SerializeObject(aLinkData);
                 var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlScene, aLinkJson);
-                new Control_Udp().SendLocalHdlLinkData(sendBytes, aLinkData.id);
+                new Control_Udp().SendLocalHdlLinkData(sendBytes, aLinkData.id,0);
             }
         }
+        /// <summary>
+        /// 缃戝叧杩涘叆閰嶇綉妯″紡
+        /// </summary>
+        public void AuthGateway()
+        {
+            var objects1 = new { spk = "", time = "180" };
+            //{"objects":[{"spk":"","time":"180"}],"id":"8","time_stamp":"1635241216669"}
+            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 sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.AuthGateway, aLinkJson);
+            new Control_Udp().SendLocalHdlLinkData(sendBytes, Ins.msg_id.ToString());
+        }
+
         /// <summary>
         /// 杞崲鍙戦�佹暟鎹�
         /// </summary>
@@ -723,7 +744,7 @@
             //1.鎷兼帴澶�
             string topicString = "Topic:" + topic + "\r\n";
             //2.Body瀛楃涓茶浆涓篵yte鏁扮粍
-            byte[] bodyBytes = Encoding.ASCII.GetBytes(bodyDataString);
+            byte[] bodyBytes = Encoding.UTF8.GetBytes(bodyDataString);
             //鍒ゆ柇鏄惁闇�鍔犲瘑Body鏁版嵁
             if (isEncryption && IsLocalEncryptAndGetAesKey)
             {
@@ -734,7 +755,7 @@
             //3.鎷兼帴body鐨凩ength闀垮害鏁版嵁
             string lengthString = "Length:" + bodyBytes.Length.ToString() + "\r\n" + "\r\n";
             string topicAndLengthString = topicString + lengthString;
-            byte[] topicAndLengthBytes = Encoding.ASCII.GetBytes(topicAndLengthString);
+            byte[] topicAndLengthBytes = Encoding.UTF8.GetBytes(topicAndLengthString);
             //4.鎷兼帴鍚堝苟 Topic 鍜� body鐨刡yte鏁扮粍鏁版嵁
             byte[] sendDataBytes = new byte[topicAndLengthBytes.Length + bodyBytes.Length];
             topicAndLengthBytes.CopyTo(sendDataBytes, 0);
@@ -750,10 +771,10 @@
         /// 杞崲鎺ユ敹鍒扮殑鏁版嵁
         /// </summary>
         /// <returns></returns>
-        public void ConvertReceiveData(byte[] receiveBytes)
+        public void ConvertReceiveData(byte[] receiveBytes,string ip)
         {
             var reString = Encoding.UTF8.GetString(receiveBytes);
-            AnalysisReceiveData(reString, receiveBytes);
+            AnalysisReceiveData(reString, receiveBytes,ip);
         }
         /// <summary>
         /// 杞崲鎺ユ敹鍒扮殑鏁版嵁
@@ -761,7 +782,7 @@
         /// <param name="receiveString">杞琒tring鍚庣殑鏁版嵁</param>
         /// <param name="originalReceiveBytes"鍘熷Bytes鏁版嵁</param>
         /// <returns></returns>
-        public LocalCommunicationData AnalysisReceiveData(string receiveString, byte[] originalReceiveBytes)
+        public LocalCommunicationData AnalysisReceiveData(string receiveString, byte[] originalReceiveBytes , string sIp = null)
         {
             LocalCommunicationData receiveObj = new LocalCommunicationData();
 
@@ -814,6 +835,10 @@
                             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
                         {
@@ -853,6 +878,10 @@
                         else
                         {
                             Ins.GatewayId = device.device_mac;
+                        }
+                        if (!string.IsNullOrEmpty(sIp))
+                        {
+                            device.ip_address = sIp;
                         }
                         reportIp = device.ip_address;//涓绘挱鍦板潃涔熻兘鎺у埗璁惧//"239.0.168.188";//
                         //2021-09-23 鏂板鑾峰彇褰撳墠缃戝叧鏄惁鏈湴鍔犲瘑
@@ -965,6 +994,10 @@
                         {
                             case SPK.AirSwitch:
                                 AirSwitchPage.UpdataState(localFunction);
+                                if(localFunction.GetAttribute(FunctionAttributeKey.Power)!=null)//濡傛灉鏄甫鐢甸噺鐨勭┖寮�涔熻鏇存柊鑳芥簮鐣岄潰
+                                {
+                                    EnergyMainPage.UpdataStatus(localFunction);
+                                }
                                 break;
                             case SPK.ElectricEnergy:
                                 EnergyMainPage.UpdataStatus(localFunction);

--
Gitblit v1.8.0