From b42ea529f6aa6dcbf74350d30e0752b828a1a9cd Mon Sep 17 00:00:00 2001 From: "qianhao.xu" Date: Tue, 27 Aug 2024 15:21:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appsettings.development.json | 10 ++++ DOAN.Common/DOAN.Common.csproj | 1 + DOAN.Common/MqttPublisher.cs | 49 +++++++++++++++++++ .../huate_group/Recipe/RecipeService.cs | 9 ++-- .../TaskScheduler/YIDA_dataUpload_Task.cs | 16 +++++- Infrastructure/Model/OptionsSetting.cs | 23 +++++++++ 6 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 DOAN.Common/MqttPublisher.cs diff --git a/DOAN.Admin.WebApi/appsettings.development.json b/DOAN.Admin.WebApi/appsettings.development.json index 6231c94..c412ac6 100644 --- a/DOAN.Admin.WebApi/appsettings.development.json +++ b/DOAN.Admin.WebApi/appsettings.development.json @@ -114,5 +114,15 @@ "author": "admin", "tablePrefix": "sys_", //"表前缀(生成类名不会包含表前缀,多个用逗号分隔)", "vuePath": "" //前端代码存储路径eg:D:\Work\DOANAdmin-Vue3 + }, + //MQTT 配置 + "MqttPublisher": { + //代理ip + "broker_ip": "192.168.0.58", + //主题 + "topic": "yida/log", + //客户端id + "clientId": "" + } } diff --git a/DOAN.Common/DOAN.Common.csproj b/DOAN.Common/DOAN.Common.csproj index b9f255f..65a7e02 100644 --- a/DOAN.Common/DOAN.Common.csproj +++ b/DOAN.Common/DOAN.Common.csproj @@ -8,6 +8,7 @@ + diff --git a/DOAN.Common/MqttPublisher.cs b/DOAN.Common/MqttPublisher.cs new file mode 100644 index 0000000..257a9d3 --- /dev/null +++ b/DOAN.Common/MqttPublisher.cs @@ -0,0 +1,49 @@ +using MQTTnet; +using MQTTnet.Client; +using MQTTnet.Protocol; +using System; +using System.Threading.Tasks; + +namespace DOAN.Common +{ + + + public class MqttPublisher + { + private IMqttClient _client; + private MqttClientOptions _options; + + public MqttPublisher(string brokerAddress, string clientId) + { + _client = new MqttFactory().CreateMqttClient(); + + _options = new MqttClientOptionsBuilder() + .WithTcpServer(brokerAddress) + .WithClientId(clientId) + .Build(); + } + + public async Task ConnectAsync() + { + await _client.ConnectAsync(_options); + } + + public async Task PublishAsync(string topic, string payload, MqttQualityOfServiceLevel qualityOfService = MqttQualityOfServiceLevel.AtLeastOnce) + { + var applicationMessage = new MqttApplicationMessageBuilder() + .WithTopic(topic) + .WithPayload(payload) + .WithQualityOfServiceLevel(qualityOfService) + .Build(); + + await _client.PublishAsync(applicationMessage); + } + + public async Task DisconnectAsync() + { + await _client.DisconnectAsync(); + } + } + + +} \ No newline at end of file diff --git a/DOAN.Service/huate_group/Recipe/RecipeService.cs b/DOAN.Service/huate_group/Recipe/RecipeService.cs index 2f5a41f..d14517b 100644 --- a/DOAN.Service/huate_group/Recipe/RecipeService.cs +++ b/DOAN.Service/huate_group/Recipe/RecipeService.cs @@ -168,17 +168,20 @@ namespace DOAN.Service.huate_group.Recipe // 获取每台设备的配方 foreach (BaseDeviceAccount device in accounts) { + DevicecCombination devicecCombination = new DevicecCombination(); + + devicecCombination._account = device; Recipee recipee = Context.Queryable() .Where(it => it.FkDeviceId == device.Id) .Where(it => it.IsSelected == true).First(); if (recipee != null) { - DevicecCombination devicecCombination = new DevicecCombination(); + devicecCombination._recipee = recipee; - devicecCombination._account = device; - DevicecCombinationList.Add(devicecCombination); + } + DevicecCombinationList.Add(devicecCombination); } diff --git a/DOAN.Tasks/TaskScheduler/YIDA_dataUpload_Task.cs b/DOAN.Tasks/TaskScheduler/YIDA_dataUpload_Task.cs index 40a6930..5745115 100644 --- a/DOAN.Tasks/TaskScheduler/YIDA_dataUpload_Task.cs +++ b/DOAN.Tasks/TaskScheduler/YIDA_dataUpload_Task.cs @@ -25,6 +25,8 @@ using DOAN.Tasks; using DOAN.Model.huate_group.CloudMonitor; using DOAN.Model.huate_group.recipe; using ZR.Model.Cloud.Dto; +using DOAN.Common; +using Infrastructure.Model; namespace ZR.Tasks.TaskScheduler { @@ -32,8 +34,14 @@ namespace ZR.Tasks.TaskScheduler internal class YIDA_dataUpload_Task : JobBase, IJob { private readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); - - + private readonly MqttPublisher publisher = null; + public YIDA_dataUpload_Task() + { + var options = App.OptionsSetting; + MqttPublicConfig mqttPublicConfig = options.mqttPublicConfig; + //init MQTT + publisher = new MqttPublisher(mqttPublicConfig.BrokerIp, mqttPublicConfig.ClientId); + } public async Task Execute(IJobExecutionContext context) { Console.WriteLine("---------------------------------上传开始"); @@ -342,6 +350,10 @@ namespace ZR.Tasks.TaskScheduler config.RegionId = "central"; return new AlibabaCloud.SDK.Dingtalkyida_1_0.Client(config); } + + + + } } diff --git a/Infrastructure/Model/OptionsSetting.cs b/Infrastructure/Model/OptionsSetting.cs index 4f9f552..1860eca 100644 --- a/Infrastructure/Model/OptionsSetting.cs +++ b/Infrastructure/Model/OptionsSetting.cs @@ -49,6 +49,11 @@ namespace Infrastructure.Model /// Reids配置 /// public RedisServerConfig RedisServer { get; set; } + + /// + /// Mqtt发布配置 + /// + public MqttPublicConfig mqttPublicConfig { get; set; } } /// /// 发送邮件数据配置 @@ -177,4 +182,22 @@ namespace Infrastructure.Model public int Open { get; set; } public bool DbCache { get; set; } } + + public class MqttPublicConfig + { + /// + /// 代理服务器 ip + /// + public string BrokerIp { get; set; } + + /// + /// 主题 + /// + public string Topic { get; set; } + + /// + /// 客户端ID + /// + public string ClientId { get; set; } + } }