×

使用Azure IoT Hub对热交换器进行热分析

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-16

李玲

分享资料个

描述

热交换器被认为是工业过程中广泛使用的最常见类型的交换器之一。该交换器由一个不同尺寸的容器组成,其中包含许多管子。传递热量的速率取决于几个因素,例如进料温度和湿度、外壳直径、管的数量、管的几何形状、挡板间距和切割间距。因此,温度分析对于保持管内正确的温度并诊断其中的故障变得非常重要。采取正确的措施可以增加设备的容错能力。

无线传感器网络已安装在许多工业应用中,例如民用基础设施的结构监测、水轮机的振动分析等,并且在消除许多工业并发症方面做得非常好。

在本教程中,我们将介绍无线温度和湿度传感器及其在热交换器热分析中的优势。所以在这里我们将演示以下内容:

  • 无线温度和湿度传感器。
  • 使用这些传感器进行温度分析。
  • 使用无线网关设备收集和分析数据。
  • 使用 Azure 发布和订阅传感器数据。

硬件和软件规格

软件规范

硬件规格

  • ThingHz 无线温度传感器。
  • FTDI程序员
  • 跳线

物联网远程无线温湿度传感器

这些是工业级长距离温度和湿度传感器,传感器分辨率为 ±1.7%RH ±0.6° C。仅由 2 节 AA 电池(随附)供电,使用寿命为 500,000 次无线传输,您可以期望实现高达长达 10 年的电池寿命取决于环境条件和传输间隔可以由您选择。可选地,该传感器可以由外部供电。这些传感器的范围为 2 英里,带有板载天线。使用网状网络架构,该范围可达到 28 英里。

获取温度和湿度值

我们从无线温度和湿度传感器获得以下值:

  • 摄氏温度
  • 华氏温度
  • 相对湿度
  • 电池使用情况

然后在 Azure IoT 中心对这些数据进行可视化和分析。若要开始设置 Azure IoT 中心,请阅读本教程。为了发送值 Azure IoT 中心,应遵循以下过程。

Azure IoT 中心遵循 MQTT 协议以发布和订阅数据。

  • Azure 函数是 azure 门户提供的另一个重要功能。使用 Azure 函数,我们可以在云中编写一段代码或函数。在这个项目中,我们正在解析包含原始传感器数据的 JSON,并使用 Azure 函数从中获取真实的温度和湿度值。要设置 Azure 功能,请遵循本教程。
  • 我们将使用解析后的 JSON 原始数据获取真实的温度和湿度数据
public static async Task Run(HttpRequestMessage req, TraceWriter log)
{  
double humidity;  
int rawTemp;  
double Ctemp;  
double Ftemp;  
double voltage;  
string utcEnque;  
string devFormat;  
string utcProcess;  
log.Info("C# HTTP trigger function processed a request: " + content);  
JArray array = JArray.Parse($"{await req.Content.ReadAsStringAsync()}");//parsing the JSON array   
foreach(dynamic message in array){      
utcProcess = message.EventProcessedUtcTime;      
utcEnque = message.EventEnqueuedUtcTime;      
humidity = ((message.Humid1)*256 + (message.Humid2))/100;      
rawTemp = ((message.Temp1)*256 + (message.Temp2));      
Ctemp = rawTemp /100.0;         
Ftemp = Ctemp *1.8 + 32;       
int bat = ((message.Bat1)*256 + (message.Bat2));      
voltage = 0.00322 * bat;      
string utcTime = utcProcess.ToString();      
DateTime localDateTime = DateTime.Parse(utcTime);       
DateTime utcDateTime = localDateTime.ToUniversalTime();      
string usTimeZone = "US Eastern Standard Time";      
TimeZoneInfo ust = TimeZoneInfo.FindSystemTimeZoneById(usTimeZone);      
DateTime dateTime = TimeZoneInfo.ConvertTime(utcDateTime, ust);      
log.Info(dateTime.ToString("dd/MM/yyyy HH:mm:ss"));    }return req.CreateResponse(HttpStatusCode.OK, "Executed");  } public class Message{    
[JsonProperty("temp1")]    
public int temp1 { get; set; }    
[JsonProperty("temp2")]    
public int temp2 { get; set; }    
[JsonProperty("humid1")]    
public int humid1 { get; set; }    
[JsonProperty("humid2")]    
public int humid2 { get; set; }    
[JsonProperty("bat1")]    
public int bat1 { get; set; }    
[JsonProperty("bat2")]    
public int bat2 { get; set; }  }

在 PowerBi 中分析数据

我们正在使用 Power BI 来可视化数据。它提供了分析数据的交互式方法。此数据可以以折线图、条形图、饼图等形式进行解释。首先在 Power Bi 中创建一个帐户并登录到您的帐户。在上一篇文章中,我们设置了 Power Bi 并使用流分析作业将数据发送到 Power Bi。在这篇文章中,我们使用 Azure 功能将传感器数据发送给 Bi。要设置 Power Bi,请阅读此博客。

有四种方法可以将数据发送到 Power Bi:

  • 将数据从 IoT 中心直接流式传输到 Power Bi。
  • 使用 API 向 Power Bi 发送数据。
  • 使用网络钩子函数
  • 使用 PubNub。

在我们的例子中,我们使用 Power BI API 并从 azure 函数向 Power BI 发送 HTTP 响应。可视化面板中列出了不同的图形、折线图、Pi 图等。我们可以通过从可视化面板中选择任何图表来创建图表。

我们还可以将数据导出为 Excel 表格或 CSV 格式。在后期可用于数据分析。

PowerBI 的 Azure 函数代码

从 JSON 中解析所有 JSON 对象,并获取温度、湿度等的真实值。这里的产品是一个产品类对象,我们在其中存储解析的值。

Product product = new Product();foreach(dynamic message in array){humidity = ((message.humid1)*256 + (message.humid2))/100;      
rawTemp = ((message.temp1)*256 + (message.temp2));      
Ctemp = rawTemp /100.0;         
Ftemp = Ctemp *1.8 + 32;       
int bat = ((message.bat1)*256 + (message.bat2));      
voltage = 0.00322 * bat;      
utcProcess = message.EventProcessedUtcTime;      
utcEnque = message.EventEnqueuedUtcTime;      
product.Ctemperature = Ctemp;      
product.Ftemperature = Ftemp;      
product.humid = humidity;      
product.battery = voltage;     
//product.dateTime = ;         
product.EventProcessedUtcTime=utcProcess;       
product.EventEnqueuedUtcTime=utcEnque;     }public class Product{  
public double Ctemperature{get; set;}  
public double humid{get; set;}  
public double battery{get; set;}  
//public double dateTime{get; set;}  
public string EventProcessedUtcTime { get; set; }  
public string EventEnqueuedUtcTime { get; set; }  
public double Ftemperature{get; set;}}
  • 现在创建一个变量来存储 Power Bi 的连接字符串
  • 创建 HTTP 客户端实例
string connString = "https://api.powerbi.com/beta/***************";  HttpClient client = new HttpClient();
  • 我们需要发送 JSON 给 Bi 供电。因此,使用模型类对象序列化 Json。
  • 将转换后的 JSON 作为 HTTP 请求发送到 power bi。
string output = JsonConvert.SerializeObject(product);     HttpContent httpContent = new StringContent("[" + output + "]");       
HttpResponseMessage response = await client.PostAsync(connString, httpContent);     response.EnsureSuccessStatusCode();

Power BI 中的数据可视化

在这里,我们在不同的日期和时间可视化我们的传感器数据。我们可以分别看到不同日子内湿度、温度和电池使用量的百分比变化。

 
 
 
 
pYYBAGNy24aAILhFAAFfIJrv354990.png
 
1 / 4
 

使用 SendGrid 的无线温度传感器 Azure 电子邮件托管

软件即服务(Saas 应用程序)提供了另一个令人惊叹的功能,称为 SendGrid。在 Microsoft Azure 中,SendGrid 支持迅速将电子邮件通知传递给不同的用户。

此博客中描述了发送网格的设置。

在这里,我们将描述使用 Azure 功能发送电子邮件通知的代码。

  • 添加这些依赖项,“Send Grid”用于访问 SendGrid 邮件服务。
 
 
 
 
poYBAGNy24iAAz37AAAsD-9DNh0305.png
 
1 / 3
 
#r "SendGrid"using Newtonsoft.Json;using Newtonsoft.Json.Linq;
using System.Net;using System.Net.Mail;
using SendGrid.Helpers.Mail;using Microsoft.Extensions.Logging;
  • 从邮件、smtp 端口、用户名、密码、smtp 主机、邮件主题和邮件正文创建用于存储到邮件的变量。
string fromMail="enter from mail";string toMail="enter to mail";int smtpPort = 587;
string smtpUserName="Enter your smtp send grid username";  
string smtpPassword = "enter sendgrid password";  
string smtpHost = "smtp.sendgrid.net";  
string subject = "Temperature Alert!!!";  
string mailMessage = "Temperature has reached beyond 30";
  • 创建 MailMessage 和 SmtpClient 的实例
MailMessage mail = new MailMessage(fromMail,toMail);SmtpClient smtpClient = new SmtpClient();
  • 设置端口、传递方法、smtp 主机、用户凭据邮件正文和主题到 Smtp 客户端和邮件消息对象。
smtpClient.Port = smtpPort;smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false;
smtpClient.Host = smtpHost;
smtpClient.Credentials = new System.Net.NetworkCredential(smtpUserName,smtpPassword);
mail.Subject = subject;mail.Body = mailMessage;
  • 设置端口、传递方法、smtp 主机、用户凭据邮件正文和主题到 Smtp 客户端和邮件消息对象。
smtpClient.Port = smtpPort;smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false;
smtpClient.Host = smtpHost;
smtpClient.Credentials = new System.Net.NetworkCredential(smtpUserName,smtpPassword);
mail.Subject = subject;mail.Body = mailMessage;
  • 每当温度超过 30 度阈值时。用户将收到一封邮件到所描述的电子邮件 ID。
if(product.Ctemperature > 30.00){              smtpClient.Send(mail);     }

通知结果

  • 每次温度超过 30 度标记时,都会向用户发送自动电子邮件通知。
  • 发送网格每次都将电子邮件通知传递给同一主题。我们不必在收件箱中向下滚动来搜索最后发送的消息。只需搜索温度警报!你会得到消息列表。

整体代码

此设置的固件可在此GitHub 存储库中找到


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !