From 036ce5eaab6126560cf9ca19b4a2783d42c2e191 Mon Sep 17 00:00:00 2001
From: ningshuxia <ningshuxia0927@outlook.com>
Date: 星期四, 23 二月 2023 17:44:52 +0800
Subject: [PATCH] SQI 常规和振动测点客户端

---
 Mqtt/IStation.DataDockingMqtt4SQI/Program.cs                                           |  141 ----------
 Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt2.cs                                         |  261 ++++++++++++++++++++
 Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt2Msg.cs                                      |   31 ++
 Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt1.cs                                         |  148 +++++++++++
 Mqtt/IStation.DataDockingMqtt4SQI/paras/AppParas.cs                                    |    4 
 Model/IStation.Model.Run/data_docking/MonitorDataDockingReceiveRecord.cs               |    2 
 Mqtt/IStation.DataDockingMqtt4SQI/IStation.DataDockingMqtt4SQI_DEMO.csproj             |    1 
 Mqtt/IStation.DataDockingMqtt4SQI/helper/DebugHelper.cs                                |    9 
 Mqtt/IStation.DataDockingMqtt4SQI/helper/HandleDataHelper.cs                           |   31 +
 Mqtt/IStation.DataDockingMqtt4SQI/Mqtt.cs                                              |   99 +++++++
 Mqtt/IStation.DataDockingMqtt4SQI/Properties/PublishProfiles/FolderProfile.pubxml      |   13 +
 Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt1Msg.cs                                      |    6 
 Mqtt/IStation.DataDockingMqtt4SQI/Properties/PublishProfiles/FolderProfile.pubxml.user |   10 
 Mqtt/IStation.DataDockingMqtt4SQI/IStation.DataDockingMqtt4SQI_DEMO.csproj.user        |    6 
 14 files changed, 606 insertions(+), 156 deletions(-)

diff --git a/Model/IStation.Model.Run/data_docking/MonitorDataDockingReceiveRecord.cs b/Model/IStation.Model.Run/data_docking/MonitorDataDockingReceiveRecord.cs
index 8ecf55e..d497d7a 100644
--- a/Model/IStation.Model.Run/data_docking/MonitorDataDockingReceiveRecord.cs
+++ b/Model/IStation.Model.Run/data_docking/MonitorDataDockingReceiveRecord.cs
@@ -9,7 +9,7 @@
     /// <summary>
     /// 鐩戞祴鏁版嵁瀵规帴鎺ユ敹璁板綍
     /// </summary>
-    public class MonitorDataDockingReceiveRecord
+    public class MonitorDataDockingReceiveRecord 
     {
         /// <summary>
         /// 
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/IStation.DataDockingMqtt4SQI_DEMO.csproj b/Mqtt/IStation.DataDockingMqtt4SQI/IStation.DataDockingMqtt4SQI_DEMO.csproj
index 569f0cb..80bbae2 100644
--- a/Mqtt/IStation.DataDockingMqtt4SQI/IStation.DataDockingMqtt4SQI_DEMO.csproj
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/IStation.DataDockingMqtt4SQI_DEMO.csproj
@@ -21,6 +21,7 @@
     <ProjectReference Include="..\..\Component\IStation.Log4Net\IStation.Log4Net.csproj" />
     <ProjectReference Include="..\..\Component\IStation.Newtonsoft\IStation.Newtonsoft.csproj" />
     <ProjectReference Include="..\..\Component\IStation.Quartz\IStation.Quartz.csproj" />
+    <ProjectReference Include="..\..\Component\IStation.RabbitMq\IStation.RabbitMq.csproj" />
     <ProjectReference Include="..\..\Model\IStation.Model.Basic\IStation.Model.Basic.csproj" />
     <ProjectReference Include="..\..\Model\IStation.Model.Core\IStation.Model.Core.csproj" />
     <ProjectReference Include="..\..\Model\IStation.Model.Monitor\IStation.Model.Monitor.csproj" />
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/IStation.DataDockingMqtt4SQI_DEMO.csproj.user b/Mqtt/IStation.DataDockingMqtt4SQI/IStation.DataDockingMqtt4SQI_DEMO.csproj.user
new file mode 100644
index 0000000..98e3e9d
--- /dev/null
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/IStation.DataDockingMqtt4SQI_DEMO.csproj.user
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <_LastSelectedProfileId>D:\WorkData\IStation\IStationV4.1\Core\Service.V4.1\Mqtt\IStation.DataDockingMqtt4SQI\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/Mqtt.cs b/Mqtt/IStation.DataDockingMqtt4SQI/Mqtt.cs
new file mode 100644
index 0000000..11f69ad
--- /dev/null
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/Mqtt.cs
@@ -0,0 +1,99 @@
+锘縰sing IStation.DataDockingMqtt;
+using MQTTnet.Client.Connecting;
+using MQTTnet.Client.Options;
+using MQTTnet.Client.Receiving;
+using MQTTnet.Extensions.ManagedClient;
+using MQTTnet;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using IStation.DataDockingMqtt4SQI_DEMO.sub;
+
+namespace IStation.DataDockingMqtt4SQI_DEMO
+{
+    public class Mqtt
+    {
+        static string TopicName = "MK-S906/up/Data/SHHM22100001";
+        static string TopicName2 = "tkg07342A3521633000/msg/up";
+
+        static string MqttUserName = "test";
+        static string MqttUserPwd = "123456";
+        static string MqttHostAdress = "106.14.83.94";
+        static int MqttHostPort = 8810;
+
+        public static async void Connect()
+        {
+            //杩炴帴鍒癕QTT鏈嶅姟鍣�
+            IManagedMqttClient _mqttClient = new MqttFactory().CreateManagedMqttClient();
+            _mqttClient.ConnectedHandler = new MqttClientConnectedHandlerDelegate(e =>
+            {
+                Console.WriteLine("閾炬帴 MQTT 鏈嶅姟鍣ㄦ垚鍔�!");
+            });
+            _mqttClient.ConnectingFailedHandler = new ClientConnectingFaildHandler(e =>
+            {
+                Console.WriteLine("閾炬帴 MQTT 鏈嶅姟鍣ㄥけ璐�!");
+            });
+            _mqttClient.UseDisconnectedHandler(ee =>
+            {
+                Console.WriteLine("閾炬帴 MQTT 鏈嶅姟鍣ㄦ柇寮�杩炴帴!");
+            });
+            _mqttClient.UseConnectedHandler(ee =>
+            {
+                Console.WriteLine("閾炬帴 MQTT 杩炴帴鍒版湇鍔�!");
+            });
+            //client.DisconnectedHandler
+            _mqttClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(Client_ApplicationMessageReceived);
+
+            IMqttClientOptions clientOptions = new MqttClientOptionsBuilder()
+                .WithClientId("EventechDemo01")
+                .WithTcpServer(MqttHostAdress, MqttHostPort)
+                .WithCredentials(MqttUserName, MqttUserPwd)
+                .WithCleanSession(false)//false 鎺ユ敹绂荤嚎娑堟伅 鏈嶅姟绔渶瑕佸惎鐢ㄤ箣涔呬細璇� WithPersistentSessions
+                                        //.WithWillMessage(new MqttApplicationMessage { Topic = "ooo", Payload = Encoding.UTF8.GetBytes("涓嬬嚎閫氱煡"), Retain = true })
+                .WithWillDelayInterval(1)
+                .Build();
+            IManagedMqttClientOptions options = new ManagedMqttClientOptionsBuilder()
+                .WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
+                .WithClientOptions(clientOptions)
+                .Build();
+
+            await _mqttClient.StartAsync(options);// 寮傛杩炴帴鍒版湇鍔″櫒
+
+            // 璁㈤槄涓婚杩囨护鍣�1
+            MqttTopicFilter topicFilter = new MqttTopicFilterBuilder()
+                .WithTopic(TopicName)// 涓婚 
+                .WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce)
+                .Build();
+            await _mqttClient.SubscribeAsync(topicFilter);
+
+            // 璁㈤槄涓婚杩囨护鍣�2
+            MqttTopicFilter topicFilter2 = new MqttTopicFilterBuilder()
+                .WithTopic(TopicName2)// 涓婚
+                .WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce)
+                .Build();
+            await _mqttClient.SubscribeAsync(topicFilter2);
+
+        }
+
+        static void Client_ApplicationMessageReceived(MqttApplicationMessageReceivedEventArgs e)
+        {
+            if (e.ApplicationMessage == null)
+                return;
+            if (e.ApplicationMessage.Topic == TopicName)
+            {
+                Mqtt1.Client_ApplicationMessageReceived(e);
+            }
+            else
+            {
+                Mqtt2.Client_ApplicationMessageReceived(e);
+            }
+        }
+
+
+    }
+
+
+
+}
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/Program.cs b/Mqtt/IStation.DataDockingMqtt4SQI/Program.cs
index 562fcf7..ebbba91 100644
--- a/Mqtt/IStation.DataDockingMqtt4SQI/Program.cs
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/Program.cs
@@ -1,4 +1,5 @@
-锘縰sing MQTTnet;
+锘縰sing IStation.DataDockingMqtt4SQI_DEMO;
+using MQTTnet;
 using MQTTnet.Client.Connecting;
 using MQTTnet.Client.Options;
 using MQTTnet.Client.Receiving;
@@ -17,143 +18,13 @@
         static void Main(string[] args)
         {
             Console.WriteLine("鍚姩 涓婃捣璐ㄦ鎵� MQTT!");
-  
-            Connect();
-
+            /*Mqtt1.Connect();
+            Mqtt2.Connect();*/
+            Mqtt.Connect();
             Console.ReadLine();
         }
-
- 
-        static string TopicName = "MK-S906/up/Data/SHHM22100001";
-        static string MqttUserName = "test";
-        static string MqttUserPwd = "123456";
-        static string MqttHostAdress = "106.14.83.94";
-        static int  MqttHostPort = 8810;
-
-        static async void Connect()
-        {
-            //string info = "{\"GW_MAC\":\"0080E10A4D34\",\"GW_IMEI\":\"867542055972080\",\"ICCID\":\"898608022221C0013505\",\"csq\":31,\"sensor\":{\"ID\":\"22100005\",\"name\":\"22100005\",\"rssi\":-29,\"battery\":100,\"type\":\"N\",\"data\":{\"value\":[32],\"unit\":[\"dB\"]},\"time\":1677072683,\"alarm\":\"N\"}}";
-            //IStation.UserDto.MqttMsg data = JsonHelper.Json2Object<IStation.UserDto.MqttMsg>(info);
-
-            //if (data != null && data.sensor != null)
-            //{
-            //    var t = data.sensor.GetTime();
-            //}
-
-
-
-            // 杩炴帴鍒癕QTT鏈嶅姟鍣�
-            IManagedMqttClient _mqttClient = new MqttFactory().CreateManagedMqttClient();
-            _mqttClient.ConnectedHandler = new MqttClientConnectedHandlerDelegate(e =>
-            {
-                Console.WriteLine("閾炬帴 MQTT 鏈嶅姟鍣ㄦ垚鍔�!");
-            });
-            _mqttClient.ConnectingFailedHandler = new ClientConnectingFaildHandler(e =>
-            {
-                Console.WriteLine("閾炬帴 MQTT 鏈嶅姟鍣ㄥけ璐�!");
-            });
-            _mqttClient.UseDisconnectedHandler(ee =>
-            {
-                Console.WriteLine("閾炬帴 MQTT 鏈嶅姟鍣ㄦ柇寮�杩炴帴!");
-            });
-            _mqttClient.UseConnectedHandler(ee =>
-            {
-                Console.WriteLine("閾炬帴 MQTT 杩炴帴鍒版湇鍔�!"); 
-            });
-            //client.DisconnectedHandler
-            _mqttClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(Client_ApplicationMessageReceived);
-
- 
-            IMqttClientOptions clientOptions = new MqttClientOptionsBuilder()
-                .WithClientId("EventechDemo01")
-                .WithTcpServer(MqttHostAdress, MqttHostPort)
-                .WithCredentials(MqttUserName, MqttUserPwd)
-                .WithCleanSession(false)//false 鎺ユ敹绂荤嚎娑堟伅 鏈嶅姟绔渶瑕佸惎鐢ㄤ箣涔呬細璇� WithPersistentSessions
-                //.WithWillMessage(new MqttApplicationMessage { Topic = "ooo", Payload = Encoding.UTF8.GetBytes("涓嬬嚎閫氱煡"), Retain = true })
-                .WithWillDelayInterval(1)
-                .Build();
-            IManagedMqttClientOptions options = new ManagedMqttClientOptionsBuilder()
-                .WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
-                .WithClientOptions(clientOptions)
-                .Build();
-
-            await _mqttClient.StartAsync(options);// 寮傛杩炴帴鍒版湇鍔″櫒
-
-
-            // 璁㈤槄涓婚杩囨护鍣�
-            MqttTopicFilter topicFilter = new MqttTopicFilterBuilder()
-                .WithTopic(TopicName)// 涓婚
-                .WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce)
-                .Build();
-            await _mqttClient.SubscribeAsync(topicFilter);
-            //client.UnsubscribeAsync()
-
-
-            //await Task.Delay(1000);
-            //// 鍙戝竷锛堬級     TCP  鐐瑰鐐�
-            //// 閽堝鏌愪釜涓婚鍙戝竷   闇�瑕佹寚瀹氫富棰� 
-            //// 閽堝杩欎釜涓婚鐨勫唴瀹癸紙璐熻浇锛�
-            //string msg = "Hello Eventech";
-            //MqttApplicationMessage message = new MqttApplicationMessageBuilder()
-            //    .WithTopic("test")
-            //    .WithPayload(Encoding.Default.GetBytes(msg))
-            //    .WithRetainFlag(false)
-            //    .Build();
-            //await client.PublishAsync(message);
-        }
-
-        // 鍝嶅簲璁㈤槄涓婚鐨勬秷鎭�
-        static void Client_ApplicationMessageReceived(MqttApplicationMessageReceivedEventArgs e)
-        {
-            if (e.ApplicationMessage == null)
-                return;
-            Console.WriteLine(">>> 鏀跺埌娑堟伅:" + e.ApplicationMessage.ConvertPayloadToString());// + ",鏉ヨ嚜瀹㈡埛绔�" + e.ClientId + ",涓婚:" + e.ApplicationMessage.Topic);
-            //try
-            //{
-            //    {Encoding.UTF8.GetString(ee.ApplicationMessage.Payload)}");
-            //}
-            //catch { }
-
-            var data = JsonHelper.Json2Object<IStation.UserDto.MqttMsg>(e.ApplicationMessage.ConvertPayloadToString());
-            if(data != null && data.sensor != null && data.sensor.data != null && data.sensor.data.value != null
-                && data.sensor.data.value.Count>0)
-            {
-                //1620681990539972608 杩涘彛鍘嬪姏
-                //1620682095074611200 鍑哄彛鍘嬪姏
-                //1620682379477782528 娓╁害
-                //1620682549540032512 鍑哄彛鐬椂娴侀噺
-                //1620684539431096320 鍣0
-                IStation.Model.MonitorDataDockingSrcRecord r = new Model.MonitorDataDockingSrcRecord();
-                r.RecordType = Model.eMonitorType.General;
-                r.SrcTime = data.sensor.GetTime();
-                    //DateTime.Now;
-                r.SrcValue = data.sensor.data.value[0].ToString();
-
-                var id = data.sensor.ID;
-                if(id == "22100004")
-                {//娴侀噺
-                    r.SignId = "1620682549540032512";
-                    HandleDataHelper.Add(r);
-                }
-                if (id == "22100002")
-                {//鍑哄彛鍘嬪姏
-                    r.SignId = "1620682095074611200";
-                    HandleDataHelper.Add(r);
-                }
-                if (id == "22100005")
-                {//鍣煶
-                    r.SignId = "1620684539431096320";
-                    HandleDataHelper.Add(r);
-                }
-                if (id == "22100003")
-                {//娓╁害
-                    r.SignId = "1620682379477782528";
-                    HandleDataHelper.Add(r);
-                }
-            }
-        }
     }
-
+      
     class ClientConnectingFaildHandler : IConnectingFailedHandler
     {
         Action<ManagedProcessFailedEventArgs> action;
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/Properties/PublishProfiles/FolderProfile.pubxml b/Mqtt/IStation.DataDockingMqtt4SQI/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..154e035
--- /dev/null
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <Configuration>Release</Configuration>
+    <Platform>Any CPU</Platform>
+    <PublishDir>bin\Release\net6.0\publish\</PublishDir>
+    <PublishProtocol>FileSystem</PublishProtocol>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/Properties/PublishProfiles/FolderProfile.pubxml.user b/Mqtt/IStation.DataDockingMqtt4SQI/Properties/PublishProfiles/FolderProfile.pubxml.user
new file mode 100644
index 0000000..3972f7a
--- /dev/null
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <History>True|2023-02-23T08:47:38.5846062Z;True|2023-02-23T16:41:12.9428442+08:00;True|2023-02-23T15:34:23.8070966+08:00;False|2023-02-23T15:31:47.2353588+08:00;True|2023-02-23T14:12:07.5170863+08:00;True|2023-02-23T13:37:00.5014916+08:00;True|2023-02-23T13:33:02.4826633+08:00;</History>
+    <LastFailureDetails />
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/helper/DebugHelper.cs b/Mqtt/IStation.DataDockingMqtt4SQI/helper/DebugHelper.cs
index a86a398..df01fc0 100644
--- a/Mqtt/IStation.DataDockingMqtt4SQI/helper/DebugHelper.cs
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/helper/DebugHelper.cs
@@ -27,13 +27,12 @@
         /// <summary>
         /// 鐢熸垚
         /// </summary>
-        public static void Src(byte[] bts)
+        public static void Src(string msg)
         {
-            if (bts == null || bts.Count() < 1)
+            if (msg == null || msg.Count() < 1)
                 return;
-
-            var message_bts = BitTransfer.ToString(bts);
-            LogHelper.Custom(_logNameSrc, message_bts);
+             
+            LogHelper.Custom(_logNameSrc, msg);
         }
 
         private const string _logNameInfo = "socket-zjs-info";
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/helper/HandleDataHelper.cs b/Mqtt/IStation.DataDockingMqtt4SQI/helper/HandleDataHelper.cs
index 18327a2..4b825d8 100644
--- a/Mqtt/IStation.DataDockingMqtt4SQI/helper/HandleDataHelper.cs
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/helper/HandleDataHelper.cs
@@ -13,19 +13,32 @@
     internal class HandleDataHelper
     {
 
-        public static  void Add(IStation.Model.MonitorDataDockingSrcRecord r)
+        public static void Add(IStation.Model.MonitorDataDockingReceiveRecord r)
         {
-            /*var queue = new RabbitMqQueueHelper();
-            queue.Push(鈥渁aa鈥�, new Model.MonitorDataDockingCorpRecord()
+        
+            var queue = new RabbitMqQueueHelper();
+            queue.Push("data_docking_queue", new Model.MonitorDataDockingCorpRecord()
             {
-                CorpID = configure.CorpID,
-                ConfigureID = 9999,
-                Records = receive_list
-            });*/
+                CorpID = 14,
+                ConfigureID = 1628638727683313664,
+                Records = new List<Model.MonitorDataDockingReceiveRecord>() { r }
+            });
+            LogCustomHelper.Info($"寰� data_docking_queue 閫氶亾鎺ㄥ叆涓�鏉℃暟鎹�");
+            LogCustomHelper.Src(JsonHelper.Object2Json(r)); 
         }
 
- 
-
+        public static void Add(List<IStation.Model.MonitorDataDockingReceiveRecord> r)
+        { 
+            var queue = new RabbitMqQueueHelper();
+            queue.Push("data_docking_queue", new Model.MonitorDataDockingCorpRecord()
+            {
+                CorpID = 14,
+                ConfigureID = 1628638727683313664,
+                Records = r
+            });
+            LogCustomHelper.Info($"寰� data_docking_queue 閫氶亾鎺ㄥ叆澶氭潯鏁版嵁");
+            LogCustomHelper.Src(JsonHelper.Object2Json(r));
+        }
 
     }
 }
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/paras/AppParas.cs b/Mqtt/IStation.DataDockingMqtt4SQI/paras/AppParas.cs
index 67a33e6..7c743ff 100644
--- a/Mqtt/IStation.DataDockingMqtt4SQI/paras/AppParas.cs
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/paras/AppParas.cs
@@ -21,8 +21,6 @@
         /// <summary>
         /// 鏄惁璋冭瘯
         /// </summary>
-        public bool Debug { get; set; }
-         
-
+        public bool Debug { get; set; } 
     } 
 }
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt1.cs b/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt1.cs
new file mode 100644
index 0000000..449d37e
--- /dev/null
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt1.cs
@@ -0,0 +1,148 @@
+锘縰sing IStation.DataDockingMqtt;
+using MQTTnet.Client.Connecting;
+using MQTTnet.Client.Options;
+using MQTTnet.Client.Receiving;
+using MQTTnet.Extensions.ManagedClient;
+using MQTTnet;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IStation.DataDockingMqtt4SQI_DEMO.sub
+{
+    public class Mqtt1
+    {
+        static string TopicName = "MK-S906/up/Data/SHHM22100001";
+        static string MqttUserName = "test";
+        static string MqttUserPwd = "123456";
+        static string MqttHostAdress = "106.14.83.94";
+        static int MqttHostPort = 8810;
+
+        public static async void Connect()
+        {
+            //杩炴帴鍒癕QTT鏈嶅姟鍣�
+            IManagedMqttClient _mqttClient = new MqttFactory().CreateManagedMqttClient();
+            _mqttClient.ConnectedHandler = new MqttClientConnectedHandlerDelegate(e =>
+            {
+                Console.WriteLine("閾炬帴 MQTT1 鏈嶅姟鍣ㄦ垚鍔�!");
+            });
+            _mqttClient.ConnectingFailedHandler = new ClientConnectingFaildHandler(e =>
+            {
+                Console.WriteLine("閾炬帴 MQTT1 鏈嶅姟鍣ㄥけ璐�!");
+            });
+            _mqttClient.UseDisconnectedHandler(ee =>
+            {
+                Console.WriteLine("閾炬帴 MQTT1 鏈嶅姟鍣ㄦ柇寮�杩炴帴!");
+            });
+            _mqttClient.UseConnectedHandler(ee =>
+            {
+                Console.WriteLine("閾炬帴 MQTT1 杩炴帴鍒版湇鍔�!");
+            });
+            //client.DisconnectedHandler
+            _mqttClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(Client_ApplicationMessageReceived);
+
+            IMqttClientOptions clientOptions = new MqttClientOptionsBuilder()
+                .WithClientId("EventechDemo01")
+                .WithTcpServer(MqttHostAdress, MqttHostPort)
+                .WithCredentials(MqttUserName, MqttUserPwd)
+                .WithCleanSession(false)//false 鎺ユ敹绂荤嚎娑堟伅 鏈嶅姟绔渶瑕佸惎鐢ㄤ箣涔呬細璇� WithPersistentSessions
+                                        //.WithWillMessage(new MqttApplicationMessage { Topic = "ooo", Payload = Encoding.UTF8.GetBytes("涓嬬嚎閫氱煡"), Retain = true })
+                .WithWillDelayInterval(1)
+                .Build();
+            IManagedMqttClientOptions options = new ManagedMqttClientOptionsBuilder()
+                .WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
+                .WithClientOptions(clientOptions)
+                .Build();
+
+            await _mqttClient.StartAsync(options);// 寮傛杩炴帴鍒版湇鍔″櫒
+
+            // 璁㈤槄涓婚杩囨护鍣�
+            MqttTopicFilter topicFilter = new MqttTopicFilterBuilder()
+                .WithTopic(TopicName)// 涓婚
+                .WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce)
+                .Build();
+            await _mqttClient.SubscribeAsync(topicFilter);
+            //client.UnsubscribeAsync()
+
+
+            //await Task.Delay(1000);
+            //// 鍙戝竷锛堬級     TCP  鐐瑰鐐�
+            //// 閽堝鏌愪釜涓婚鍙戝竷   闇�瑕佹寚瀹氫富棰� 
+            //// 閽堝杩欎釜涓婚鐨勫唴瀹癸紙璐熻浇锛�
+            //string msg = "Hello Eventech";
+            //MqttApplicationMessage message = new MqttApplicationMessageBuilder()
+            //    .WithTopic("test")
+            //    .WithPayload(Encoding.Default.GetBytes(msg))
+            //    .WithRetainFlag(false)
+            //    .Build();
+            //await client.PublishAsync(message);
+        }
+
+        // 鍝嶅簲璁㈤槄涓婚鐨勬秷鎭�
+        public static void Client_ApplicationMessageReceived(MqttApplicationMessageReceivedEventArgs e)
+        {
+            if (e.ApplicationMessage == null)
+                return;
+            Console.WriteLine(">>> 鏀跺埌娑堟伅:" + e.ApplicationMessage.ConvertPayloadToString() + ",鏉ヨ嚜瀹㈡埛绔�" + e.ClientId + ",涓婚:" + e.ApplicationMessage.Topic);
+        
+            var data = JsonHelper.Json2Object<Mqtt1Msg>(e.ApplicationMessage.ConvertPayloadToString());
+            if (data != null && data.sensor != null && data.sensor.data != null && data.sensor.data.value != null
+                && data.sensor.data.value.Count > 0)
+            {
+                //1620681990539972608  杩涘彛鍘嬪姏
+                //1620682095074611200  鍑哄彛鍘嬪姏
+                //1620682379477782528  娓╁害
+                //1620682549540032512  鍑哄彛鐬椂娴侀噺
+                //1620684539431096320 鍣0
+
+                //1628644701211070464	鐢靛帇
+                //1628644747105144832	鐢垫祦
+                //1628644805007511552	鍔熺巼
+                //1628644845088280576	棰戠巼
+                //1628644902701240320	娓╁害
+                //1628644990471245824	x鍔犻�熷害
+                //1628645042027630592	Y鍔犻�熷害
+                //1628645078274805760	Z鍔犻�熷害
+
+
+                Model.MonitorDataDockingReceiveRecord r = new Model.MonitorDataDockingReceiveRecord();
+                r.RecordType = Model.eMonitorType.General;
+                r.SrcTime = data.sensor.GetTime();
+                r.SrcValue = data.sensor.data.value[0].ToString();
+
+                var id = data.sensor.ID;
+                if (id == "22100004")
+                {//娴侀噺
+                    r.SysId = 1620682549540032512;
+                    HandleDataHelper.Add(r);
+                }
+                if (id == "22100002")
+                {//鍑哄彛鍘嬪姏
+                    r.SysId = 1620682095074611200;
+                    HandleDataHelper.Add(r);
+                }
+                if (id == "22100005")
+                {//鍣煶
+                    r.SysId = 1620684539431096320;
+                    HandleDataHelper.Add(r);
+                }
+                if (id == "22100003")
+                {//娓╁害
+                    r.SysId = 1620682379477782528;
+                    HandleDataHelper.Add(r);
+                }
+                /*if (id== "")
+                {
+                    //杩涘彛鍘嬪姏
+                    r.SysId = 1620681990539972608;
+                    HandleDataHelper.Add(r); 
+                }*/
+            }
+        }
+    }
+
+
+
+}
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/UserDto.cs b/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt1Msg.cs
similarity index 96%
rename from Mqtt/IStation.DataDockingMqtt4SQI/UserDto.cs
rename to Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt1Msg.cs
index 539c159..3e4b1b1 100644
--- a/Mqtt/IStation.DataDockingMqtt4SQI/UserDto.cs
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt1Msg.cs
@@ -4,12 +4,12 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace IStation.UserDto
+namespace IStation.DataDockingMqtt4SQI_DEMO.sub
 {
     /// <summary>
     /// 
     /// </summary>
-    public  class MqttMsg
+    public class Mqtt1Msg
     {
         /// <summary>           
         /// 
@@ -65,7 +65,7 @@
             startTime = startTime.AddSeconds(time).ToLocalTime();
             return startTime;
         }
-        
+
 
         /// <summary>
         /// 
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt2.cs b/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt2.cs
new file mode 100644
index 0000000..16787f3
--- /dev/null
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt2.cs
@@ -0,0 +1,261 @@
+锘縰sing IStation.DataDockingMqtt;
+using MQTTnet.Client.Connecting;
+using MQTTnet.Client.Options;
+using MQTTnet.Client.Receiving;
+using MQTTnet.Extensions.ManagedClient;
+using MQTTnet;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IStation.DataDockingMqtt4SQI_DEMO.sub
+{
+    public static class Mqtt2
+    {
+        static string TopicName = "tkg07342A3521633000/msg/up";
+        static string MqttUserName = "test";
+        static string MqttUserPwd = "123456";
+        static string MqttHostAdress = "106.14.83.94";//172.19.0.218
+        static int MqttHostPort = 8810;
+
+        public static async void Connect()
+        {
+            //杩炴帴鍒癕QTT鏈嶅姟鍣�
+            IManagedMqttClient _mqttClient = new MqttFactory().CreateManagedMqttClient();
+            _mqttClient.ConnectedHandler = new MqttClientConnectedHandlerDelegate(e =>
+            {
+                Console.WriteLine("閾炬帴 MQTT2 鏈嶅姟鍣ㄦ垚鍔�!");
+            });
+            _mqttClient.ConnectingFailedHandler = new ClientConnectingFaildHandler(e =>
+            {
+                Console.WriteLine("閾炬帴 MQTT2 鏈嶅姟鍣ㄥけ璐�!");
+            });
+            _mqttClient.UseDisconnectedHandler(ee =>
+            {
+                Console.WriteLine("閾炬帴 MQTT2 鏈嶅姟鍣ㄦ柇寮�杩炴帴!");
+            });
+            _mqttClient.UseConnectedHandler(ee =>
+            {
+                Console.WriteLine("閾炬帴 MQTT2 杩炴帴鍒版湇鍔�!");
+            });
+
+            _mqttClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(Client_ApplicationMessageReceived);
+
+            IMqttClientOptions clientOptions = new MqttClientOptionsBuilder()
+                .WithClientId("EventechDemo02")
+                .WithTcpServer(MqttHostAdress, MqttHostPort)
+                .WithCredentials(MqttUserName, MqttUserPwd)
+                .WithCleanSession(false)//false 鎺ユ敹绂荤嚎娑堟伅 鏈嶅姟绔渶瑕佸惎鐢ㄤ箣涔呬細璇� WithPersistentSessions
+                                        //.WithWillMessage(new MqttApplicationMessage { Topic = "ooo", Payload = Encoding.UTF8.GetBytes("涓嬬嚎閫氱煡"), Retain = true })
+                .WithWillDelayInterval(1)
+                .Build();
+            IManagedMqttClientOptions options = new ManagedMqttClientOptionsBuilder()
+                .WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
+                .WithClientOptions(clientOptions)
+                .Build();
+
+            await _mqttClient.StartAsync(options);// 寮傛杩炴帴鍒版湇鍔″櫒
+
+            // 璁㈤槄涓婚杩囨护鍣�
+            MqttTopicFilter topicFilter = new MqttTopicFilterBuilder()
+                .WithTopic(TopicName)// 涓婚
+                .WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce)
+                .Build();
+            await _mqttClient.SubscribeAsync(topicFilter);
+
+
+        }
+
+
+
+
+        /*
+        1628644701211070464	鐢靛帇
+        1628644747105144832	鐢垫祦
+        1628644805007511552	鍔熺巼
+        1628644845088280576	棰戠巼
+        1628644902701240320	娓╁害
+        1628644990471245824	x鍔犻�熷害
+        1628645042027630592	Y鍔犻�熷害
+        1628645078274805760	Z鍔犻�熷害
+        */
+
+        // 鍝嶅簲璁㈤槄涓婚鐨勬秷鎭�
+        public static void Client_ApplicationMessageReceived(MqttApplicationMessageReceivedEventArgs e)
+        {
+            if (e.ApplicationMessage == null)
+                return;
+            Console.WriteLine(">>> 鏀跺埌娑堟伅:" + e.ApplicationMessage.ConvertPayloadToString() + ",鏉ヨ嚜瀹㈡埛绔�" + e.ClientId + ",涓婚:" + e.ApplicationMessage.Topic);
+
+            var data = JsonHelper.Json2Object<Mqtt2Msg>(e.ApplicationMessage.ConvertPayloadToString());
+            if (data == null)
+            {
+                LogCustomHelper.Error("MQTT2 data 涓虹┖");
+                return;
+            }
+            if (string.IsNullOrEmpty(data.msg))
+            {
+                LogCustomHelper.Error("MQTT2 data.msg 涓虹┖");
+                return;
+            } 
+
+            var bytes = StringToHexValuve(data.msg, out string err)?.ToArray();
+            LogCustomHelper.Info($"MQTT2 msg:{BitConverter.ToString(bytes)}");
+            if (bytes == null || bytes.Count() < 1)
+                return;
+            var list = new List<Model.MonitorDataDockingReceiveRecord>();
+
+            var record = new Model.MonitorDataDockingReceiveRecord();
+            record.SrcTime = DateTime.Now;
+            record.RecordType = Model.eMonitorType.General;
+
+            var byte4 = new byte[4];
+            var byte2 = new byte[2];
+
+            //鐢靛帇
+            Array.Copy(bytes, 0, byte4, 0, 4);
+            var dy = Bytes2Double(byte4.Reverse().ToArray());
+            record.SysId = 1628644701211070464;
+            record.SrcValue = dy.ToString();
+            list.Add(new Model.MonitorDataDockingReceiveRecord(record));
+
+            //鐢垫祦
+            Array.Copy(bytes, 4, byte4, 0, 4);
+            var dl = Bytes2Double(byte4.Reverse().ToArray());
+            record.SysId = 1628644747105144832;
+            record.SrcValue = dl.ToString();
+            list.Add(new Model.MonitorDataDockingReceiveRecord(record));
+
+            //鍔熺巼
+            Array.Copy(bytes, 8, byte4, 0, 4);
+            var gl = Bytes2Double(byte4.Reverse().ToArray());
+            record.SysId = 1628644805007511552;
+            record.SrcValue = gl.ToString();
+            list.Add(new Model.MonitorDataDockingReceiveRecord(record));
+
+            //棰戠巼
+            Array.Copy(bytes, 12, byte4, 0, 4);
+            var pl = Bytes2Double(byte4.Reverse().ToArray());
+            record.SysId = 1628644845088280576;
+            record.SrcValue = pl.ToString();
+            list.Add(new Model.MonitorDataDockingReceiveRecord(record));
+
+            //娓╁害*10
+            Array.Copy(bytes, 16, byte2, 0, 2);
+            var wd = BitConverter.ToInt16(byte2.Reverse().ToArray());
+            record.SysId = 1628644902701240320;
+            record.SrcValue = (wd / 10.0).ToString();
+            list.Add(new Model.MonitorDataDockingReceiveRecord(record));
+
+            //x鍔犻�熷害
+            Array.Copy(bytes, 18, byte2, 0, 2);
+            var xjsd = bytesToInt2(byte2.Reverse().ToArray());
+            record.SysId = 1628644990471245824;
+            record.SrcValue = xjsd.ToString();
+            list.Add(new Model.MonitorDataDockingReceiveRecord(record));
+
+            //Y鍔犻�熷害
+            Array.Copy(bytes, 20, byte2, 0, 2);
+            var yjsd = bytesToInt2(byte2.Reverse().ToArray());
+            record.SysId = 1628645042027630592;
+            record.SrcValue = yjsd.ToString();
+            list.Add(new Model.MonitorDataDockingReceiveRecord(record));
+
+            //Z鍔犻�熷害
+            Array.Copy(bytes, 22, byte2, 0, 2);
+            var zjsd = bytesToInt2(byte2.Reverse().ToArray());
+            record.SysId = 1628645078274805760;
+            record.SrcValue = zjsd.ToString();
+            list.Add(new Model.MonitorDataDockingReceiveRecord(record));
+
+            HandleDataHelper.Add(list);
+        }
+
+        /// <summary>
+        /// 瀛楃涓茶浆16杩涘埗瀛楃2
+        /// </summary> 
+        static List<byte> StringToHexValuve(string content, out string error_info)
+        {
+
+            //鍘绘帀绌烘牸
+            string[] arr = content.Split(2);
+            if (arr.Length < 3)
+            {
+                arr = content.Split('-');
+                if (arr.Length < 3)
+                {
+                    error_info = "瀛楃鏃犳硶瑙f瀽";
+                    return null;
+                }
+            }
+            List<byte> result = new List<byte>();
+            for (int i = 0; i < arr.Length; i++)
+            {
+                if (string.IsNullOrWhiteSpace(arr[i]))
+                    continue;
+
+                var dddd = Convert.ToByte(arr[i], 16);
+                result.Add(dddd);
+            }
+            error_info = null;
+            return result;
+        }
+
+        static string[] Split(this string str, int count)
+        {
+            var list = new List<string>();
+            int length = (int)Math.Ceiling((double)str.Length / count);
+
+            for (int i = 0; i < length; i++)
+            {
+                int start = count * i;
+                if (str.Length <= start)
+                {
+                    break;
+                }
+                if (str.Length < start + count)
+                {
+                    list.Add(str.Substring(start));
+                }
+                else
+                {
+                    list.Add(str.Substring(start, count));
+                }
+            }
+
+            return list.ToArray();
+        }
+
+        /** 
+           * byte鏁扮粍涓彇int鏁板�硷紝鏈柟娉曢�傜敤浜�(浣庝綅鍦ㄥ悗锛岄珮浣嶅湪鍓�)鐨勯『搴忋��2涓瓧鑺�
+           */
+        public static int bytesToInt2(byte[] src, int offset = 0)
+        {
+            int value;
+            value =
+                     (src[offset + 0] & 0xFF) << 8
+                    | src[offset + 1] & 0xFF;
+            return value;
+        }
+        /** 
+        * byte鏁扮粍涓彇int鏁板�硷紝鏈柟娉曢�傜敤浜�(浣庝綅鍦ㄥ悗锛岄珮浣嶅湪鍓�)鐨勯『搴忋��4涓瓧鑺�
+        */
+        public static int bytesToInt4(byte[] src, int offset = 0)
+        {
+            int value;
+            value = (src[offset] & 0xFF) << 24
+                    | (src[offset + 1] & 0xFF) << 16
+                    | (src[offset + 2] & 0xFF) << 8
+                    | src[offset + 3] & 0xFF;
+            return value;
+        }
+
+        private static float Bytes2Double(byte[] value, int offset = 0)
+        {
+            return BitConverter.ToSingle(value, 0);//閲囩敤浜咺EEE-754浜岃繘鍒舵诞鐐规暟绠楁湳鏍囧噯
+        }
+
+    }
+}
diff --git a/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt2Msg.cs b/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt2Msg.cs
new file mode 100644
index 0000000..ca2db3d
--- /dev/null
+++ b/Mqtt/IStation.DataDockingMqtt4SQI/sub/Mqtt2Msg.cs
@@ -0,0 +1,31 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IStation.DataDockingMqtt4SQI_DEMO.sub
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class Mqtt2Msg
+    {
+        /// <summary>           
+        /// 
+        /// </summary>
+        public string channel { get; set; }
+        /// <summary>                                  
+        ///                                         
+        public string snr { get; set; }
+        /// <summary>                              
+        ///                                        
+        /// </summary>                             
+        public string rssi { get; set; }
+        /// <summary>                              
+        ///                                        
+        /// </summary>                             
+        public string msg { get; set; }
+    }
+
+}

--
Gitblit v1.9.3