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