基于.NET 制作一个气象站 IoT 应用
Posted DotNET技术圈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于.NET 制作一个气象站 IoT 应用相关的知识,希望对你有一定的参考价值。
点击“阅读原文”获得最佳阅读体验。
和单片机不同,使用 Linux 开发板、现成的传感器套件以及合适的后端技术几乎可以做成任何东西。为了更好的整合前面章节介绍的内容,本文将制作一个简单的气象站(也许叫环境信息收集装置更合适),至于为何选择制作一个气象站,因为难度不高制作不复杂,并且温湿度传感器花费较低的价格即可获得,可以以低廉的价格换取一个 cool stuff。本文将使用 .NET 6 编写一个控制台应用程序,通过本文你可以学到:
I2C
I2cDevice
类的使用;摄像头设备
VideoDevice
类的使用;Iot.Device.Bindings
NuGet 包的使用;时序数据库
TimescaleDB
的简单使用;Quartz
定时任务的使用;在控制台应用中进行依赖注入;
使用
Docker
拉取镜像、部署应用。
硬件需求
电路
准备工作
配置 TimescaleDB 数据库
安装摄像头的依赖库
编写代码
项目结构
项目依赖
数据库上下文与实体类
配置文件
初始化与依赖注入配置
配置定时任务
部署应用
发布到文件
构建 Docker 镜像
后续工作
OWNER postgres ENCODING metrics ( 这里使用了一个传递数据库连接字符串的构造函数,连接字符串从 ServiceProvider config . .context i2cSettings i2c I2cDevice.bme videoSettings video VideoDevice. . . . . .: context) bme (Bme280)AppConfig.ServiceProvider. bme. bme.PressureSampling Sampling.UltraHighResolution; video (VideoDevice)AppConfig.ServiceProvider. image video. Convert. config (IConfigurationRoot)AppConfig.ServiceProvider. client context) trigger TriggerBuilder. . .jobDetail JobBuilder. . .factory scheduler factory.
WITHOUT ZONE device_id weather_type temperature humidity pressure image_base64 create_hypertable( [ Time DateTime.Now;
[ DeviceId [ WeatherType [ Temperature [ Humidity [ Pressure [ ImageBase64 : _connectString;
connectString)
_connectString connectString;
optionsBuilder)
AppContext. optionsBuilder.
modelBuilder)
modelBuilder. . . appsettings.json
文件中读取。由于 metrics
表是无主键的,还需要使用 HasNoKey()
进行标记。EF Core 由于使用了实体跟踪,因此无法对无主键的表进行修改,只能通过执行 SQL 的方式插入数据,在 Metrics.cs
中新增方法:context, metrics)
row context.Database. row
Task.()
);
bme.TemperatureSampling Sampling.UltraHighResolution;
bme.HumiditySampling Sampling.UltraHighResolution;
bme.p);
bme.t);
bme.h);
bme.
DeviceId Dns. Temperature Math. Humidity Math. Pressure Math. ;
json client. (
(
Task.()
metrics metrics.WeatherType metrics.ImageBase64 context (WeatherContext)AppConfig.ServiceProvider. Metrics. );