使用MASA全家桶从零开始搭建IoT平台(一)环境准备

前言

本系列文章以IoT开发小白的角度,从零开始使用.Net为主要技术搭建一个简单的IoT平台,由于是入门系列,所有代码以围绕IoT基础业务场景为主,不会涉及DDD等设计思想。

架构图

这里是我们整个IoT平台的架构图。

一、设备接入

1、针对可以联网的设备,直接通过MQTT协议连接到我们的MQTT服务上(可以使用国内的阿里云、Onenet也可以使用开源EMQX实现)。绿色线框部分
2、针对不能联网的设备,例如只能通过红外、短信、等其他非互联网技术通讯的,采用设备网关统一接管,这里主要涉及硬件相关内容我们不深入讨论。橙色线框部分

二、处理设备遥测数据

我们通过MQTT Hub 订阅设备发布到MQTT的消息,并通过Dapr的Pub/Sub 方式发送给我们的IoT Core集群,我们可以通过MQTT 5.0协议中的共享订阅方式实现我们高可用集群。蓝色线框部分

三、设备控制

直接在IoT Core中直接向MQTT发布控制指令。红色箭头所示

四、管理后台

管理后台我们采用Blazor搭建结合MASA Auth实现权限控制,红色线框部分,在IoT Core和IoT UI中间有一层Gateway,主要是方便我们在这一层Mock一些依赖的第三方业务接口,例如某个环节我需要从生产的MES系统获取某些信息才能继续下面的操作,我们可以在Gateway层去Mock这些接口和数据,方便我们测试。

五、数据存储

业务数据我们存储到关系型数据库中,设备的消息数据(遥测数据),我们存储到时序库中,方便统计查找,和生成报表。

六、规则引擎

针对不同类型的消息,我们可以在规则引擎中配置,使消息可以走不同的处理流程,例如接入的第三方系统设备,设备消息可能是加密的,我们就通过规则引擎将这种类型的消息发送到第三方系统解密之后再存储到数据库中,也可以在这里针对遥测数据进行分析和过滤,产生分级告警信息,发送到对应的处理系统或者干系人邮箱等。

环境准备

1、安装EMQX

1、运行以下命令获取 Docker 镜像:

docker pull emqx/emqx:5.0.20

2、运行以下命令启动 Docker 容器

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.0.20

2、创建解决方案

创建解决方案MASA.IoT,分别添加
1、WebApi项目MASA.IoT.Core,对应架构图中IoT Core
2、WebApi项目MASA.IoT.Hub,对应架构图中IoT Hub
3、Blazor应用MASA.IoT.UI,对应架构图中的IoT.UI,也就是管理后台
4、类库MASA.IoT.Common,存放一些静态的公共方法

3、安装Dapr开发环境

Dapr的全称是 “Distributed Application Runtime”,即 “分布式应用运行时”。是一个开源项目,由微软发起
对Dapr不了解的同学可以学习,鬼老师的Dapr系列文章

使用Masa DaprStarter搭建开发环境

安装Dapr

Windows安装Dapr的方式有很多,可以参考官方文档

https://docs.dapr.io/getting-started/install-dapr-cli/

国内如果访问缓慢,建议直接下载msi文件安装

https://github.com/dapr/cli/releases

安装一路下一步即可。

安装Docker Desktop

直接参考官方文档,这里不过多赘述

https://docs.docker.com/desktop/install/windows-install/

初始化Dapr

命令行执行

dapr init

这里如果有类似网络错误,那就需要考虑魔法上网或者直接到dapr的github 上下载 dashboard_darwin_amd64.zip
daprd_windows_amd64.zip 两压缩包,
执行dapr init 有了bin目录后 看准时机 把下载好的两个压缩包复制进去
例如:C:\Users\Administrator\.dapr 下的bin目录中,该目录下的压缩包会自动解压
如果失败可以通过 dapr uninstall 命令卸载后重试。
安装成功后通过 dapr -v 可以看到如下版本信息

在Docker Desktop中会创建三个容器

代码开发

我们新建两个WebApi项目,模拟微服务之间通过dapr调用的场景。
新建webapi项目PubDemoSubDemo,并分别安装Dapr.ClientMasa.Contrib.Development.DaprStarter.AspNetCore后者方便我们在开发环境管理dapr的生命周期。
我们在SubDemo项目中额外安装Dapr.AspNetCore
PubDemoProgram.cs添加

if (builder.Environment.IsDevelopment())
{
   
    builder.Services.AddDaprStarter(builder.Configuration
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值