使用MASA全家桶从零开始搭建IoT平台(二)设备注册

前言

我们不希望任何设备都可以接入我们的IoT平台,所以一个设备正常的接入流程是这样的,
1、上位机软件通过串口或其他方式读取设备的唯一标识码UUID
2、上位机调用IoT后台接口,发送UUIDProductID
3、后台接口判断设备是否注册过,如果没有注册过,就根据ProductID并按照一定规律生成DeviceNamePassword通过接口返回给上位机软件。
4、上位机软件通过串口将接口返回的数据写入设备。

一、设备注册流程

这里主要涉及四个概念
1、UUID(设备唯一ID,一般为设备主控板编号)
2、ProductID(设备所属产品ID,在IoT后台定义)
3、DeviceName(设备在IoT平台或MQTT的名称,该名称大多与产品相关)
4、Password(设备连接MQTT的密码)

二、MQTT注册

1.在EMQX中添加认证方式

选择Built-in Database方式,内置数据库进行密码认证

账号类型选择username,加密方式和加盐方式可以保持默认。

点击创建后可以在认证菜单中看到新建的认证方式,状态为:已连接。

我们点击用户管理->添加 可以手动创建用户

这里的场景我们是通过上位机调用IoT后端,IoT接口内部调用EMQX接口来实现自动创建用户的

2.创建Api Key

调用接口需要认证,这里我们使用Api key的方式,我们在系统设置->API密钥中创建一个API密钥

Secret Key 只有创建的时候才会显示明文,我们需要记录下API Key 和 Secret Key

3.调用接口创建用户

我们在浏览器打开EMQX 的RestAPI swagger

http://localhost:18083/api-docs/index.html

我们可以通过这个接口来创建用户,这里的Authenticator ID 就是我们上面创建的内置数据库 Password Based的ID,

这个ID的获取通过下面的authentication方法获取

我们在认证中直接使用API Key 和 Secret Key,接口返回Id:password_based:built_in_database

调用authentication的Post接口,在 id字段输入:password_based:built_in_database,Request body中输入设备的user_id和password即可成功创建用户。

我们在Deshboard的界面中也可以看到刚刚创建的用户

三、测试设备连接

我们使用MQTTX来模拟客户端设备通过mqtt协议连接到EMQX,新建连接,填写地址、端口、和刚刚通过Api创建用户名密码。

点击连接、发现设备已经可以正常连接mqtt了。

在Dashboard中也可以看到当前连接的客户端ID等信息。

四、编写代码

在MASA.IoT.WebApi项目种添加DeviceController控制器并添加DeviceRegAsync方法用于设备注册,设备如果没有注册过(UUID 数据库不存在),那么会根据ProductCode按照规律生成设备名称,名称以该产品供应商编号开头,后跟时间和序号。然后向EMQX添加设备,并同时存储到数据库中。
如果设备已经注册过,那么直接从数据库取出设备注册信息返回。
代码编写相对简单,不过多赘述。

//DeviceController
namespace MASA.IoT.WebApi.Controllers
{
   
   
    [Route("api/[controller]")]
    [ApiController]
    public class DeviceController : ControllerBase
    {
   
   
        private readonly IDeviceHandler _deviceHandler;

        public DeviceController(IDeviceHandler deviceHandler)
        {
   
   
            _deviceHandler = deviceHandler;
        }

        [HttpPost]

        public async Task<DeviceRegResponse> DeviceRegAsync(DeviceRegRequest request)
        {
   
   
            return await _deviceHandler.DeviceRegAsync(request);
        }
    }
}
//DeviceHandler
using MASA.IoT.WebApi.Contract;
using MASA.IoT.WebApi.IHandler;
using MASA.IoT.WebApi.Models.Models;

相关推荐

MASA MAUI 预览Office文件

在线预览Office文件Api,拼接自己的office文件地址参数后在浏览器中访问即可达到预览效果。接下来我们按照这个思路在Maui中实现这个效果。本文主要介绍了如何在Maui下预览Office文件,并分享开发过程正踩过的坑以及对应的解决方案。希望能帮助到遇到同样需求问题的朋友。

MASAteam的博客 542

MASA MAUI iOS 文件下载与断点续传

是 iOS 中用于处理网络请求和数据下载的核心类之一。它提供了强大的功能,使应用程序能够与远程服务器通信、下载文件、上传数据等。本文我们借助中的来创建下载任务。下载任务直接将服务器的响应数据写入临时文件,在数据从服务器到达时为应用提供进度更新。在后台会话中使用下载任务时,即使应用处于挂起状态或未运行,这些下载也会继续。可以暂停(取消)下载任务,稍后再恢复它们(需要服务端支持)还可以恢复由于网络连接问题而失败的下载。

MASAteam的博客 764

MAUI+Masa Blazor APP 各大商店新手发布指南(三)vivo篇

上架vivo商店,使用厂家的离线推送当然是一个重要原因,与小米不同,vivo的推送服务可以在应用未上架的情况下通过添加测试手机的方式进行测试安卓平台的商店审核规则基本都是一致的,但是审核人员的标准和“仔细”程度不尽相同。vivo也提供了在线咨询客服的功能,国内商店基本都有在线人工客服,这点比App Store方便很多。这些审核相关的内容我们如果之前没有App的开发经验,可以提前学习一下,对开发和相关设计都是很有帮助的。

MASAteam的博客 637

MAUI+Masa Blazor APP 各大商店新手发布指南(二)小米篇

先说一下我们上架厂家应用商店的原因:除了方便用户下载之外,需要厂家的离线推送和微信内容分享等都需要上架应用商店(微信分享不上架有调用次数限制)。如果你的App需要在国内使用离线推送功能,也就是App不启动的场景下接收消息推送,那么你需要集成厂家的SDK,如果你使用了第三方推送,例如 极光、个推。

MASAteam的博客 589

MAUI+Masa Blazor APP 各大商店新手发布指南(一)App Store篇

作为新手App开发,iOS由于众所周知的原因,必须通过App Store下载安装App,所以通过App Store的审核是必须的(当然如果您有299美元一年的企业版证书可以走内部分发渠道的场景除外)。以下是我们首次使用MAUI+MASA Blazor开发App并上传App Store中遇到的审核意见和我们的解决方法,供MAUI新手开发参考。首先强调:1、App Store不需要软著。2、发布App Store需要确认证书为个人或者公司,企业证书是不能发布App Store的。

MASAteam的博客 826

MAUI+MASA Blazor 兼容性测试报告及分析

由于越来越多的Net开发者开始使用MAUI+Blazor的框架来开发移动端应用,我们决定对MASA Blazor组件在MAUI框架进行兼容性测试,以确保其在移动端App中的兼容性和稳定性。通过这次测试,我们的目标是验证MASA Blazor组件在MAUI框架下的表现,识别任何潜在的问题和缺陷,并提供改进和优化建议,以确保用户可以在各种移动设备上无缝使用该组件。MASA Blazor作为Blazor家庭中广受欢迎的组件,无论在PC端还是移动端都可以提供良好的交互与性能,并提供了大量移动端专用组件。

MASAteam的博客 1324

2023年北京.NET线下技术沙龙圆满落幕!

第三位嘉宾是代强老师,他是云联网信技术负责人、.NET开发者,从业五年,微信公众号【美男子玩编程】维护者之一,博客园【关关长语】HandyControl开源项目文档贡献者之一,多能力开发者。接下来是李国梁老师,他是公众号、博客园【yi念之间】的作者,拥有近10年的.NET开发经验,主导过多个大型TOB平台从0到1的架构设计,热衷于开源项目贡献。他的分享主题是“.NET在工业软件的应用实践”,通过实际案例和技术方案,让听众们深入了解了.NET在工业软件领域的应用和实践。

MASAteam的博客 431

北京.NET线下技术沙龙倒计时一天

(中关村智能制造创新中心)(距海淀黄庄地铁站100米)【地下停车场可停车】.NET技术沙龙活动与你不见不散。

MASAteam的博客 388

2023年北京.NET线下技术沙龙来了!大咖分享,还有精品好礼等你

MASA技术团队来北京啦!为了与北京的.NET开发者们更深入的交流学习,我们将在北京市举办一场.NET线下技术沙龙。同时也是希望通过举办这样的线下沙龙,让更多的.NET开发者了解我们,加入.NET开源技术生态,向更多的.NET开发者分享我们的理念。期间,我们邀请到的四位技术大咖,将会围绕各自的主题向大家分享他们的技术心得。当然,我们也为大家准备了许多礼物,相信大家一定会喜欢,快来报名参加吧!2023年5月20日13:30-18:00。

MASAteam的博客 1062

使用MASA全家桶从零开始搭建IoT平台(三)管理设备的连接状态

获取一个设备的在线和离线状态,是一个很关键的功能。我们对设备下发的控制指令,设备处于在线状态才能及时给我们反馈。这里的在线和离线,我们可以简单的理解为设备与MQTT的连接状态。

MASAteam的博客 1312

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

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

MASAteam的博客 1663

成都.NET线下技术沙龙倒计时一天

四川省成都市武侯区世纪城路198号世纪城新国际会展中心2区3楼。2023年4月15日下午13:30。.NET技术沙龙与你不见不散。点击链接即可报名活动。

MASAteam的博客 253

2023年成都.NET线下技术沙龙来了!大咖分享,报名从速

MASA技术团队来成都啦!我们联合了成都.NET俱乐部,将在成都市举办一场.NET线下技术沙龙,为.NET开发者创造一次交流学习的契机,我们邀请到的几位技术大咖,将会围绕各自的主题向大家分享他们的技术心得。2023年4月15日13:30-17:30四川省成都市武侯区世纪城路198号世纪城新国际会展中心2区3楼(知域空间)【楼下可停车】

MASAteam的博客 612

Blazor在IoT领域的前端实践 @.NET开发者日

2023年3月11号,MASA技术团队参加了“.NET开发者日”,IoT项目经理郭浩在活动中做“”的主题分享数闪科技 IoT 项目经理从事 .NET 开发10余年,目前在数闪科技担任 IoT 项目经理,有大量 IoT 产品的开发经验,在 Android 和 iOS 的 Blazor MAUI 开发上有大量实践经验。本次分享主要分为两个部分第一部分我们为什么要在IoT项目中使用Blazor技术,Blazor给IoT带来了什么?第二部分。

MASAteam的博客 1007

MASA MAUI Plugin (十)iOS消息推送(原生APNS方式)

本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。Apple 推送通知服务(Apple Push Notification service),简称 APNs。与之前Android使用个推不同,由于APNs国内可用,所以我们可以直接使用APNs来实现远程消息推送,不依赖其他第三方组件和服务。我们这里推送使用的是p8证书,p8证书相对p12证书来讲,更灵活,而且没有p12证书有效期1年的限制。

MASAteam的博客 1355

MASA MAUI Plugin (九)Android相册多选照片(使用Android Jetpack套件库)

本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。Jetpack 包含一系列 Android 库,它们都采用最佳做法并在 Android 应用中提供向后兼容性。hl=zh-cn上一篇我们是通过Intent实现的,今天我们用Jetpack 实现相册的多选功能。

MASAteam的博客 929

MASA MAUI Plugin (八)Android相册多选照片(Intent 方式)

本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。项目中有需要从相册多选图片的需求,MAUI提供的无多选功能,虽然可以实现多选,但是多选文件需要长按,而且没有预览和返回按钮,用户交互效果不好。作为安卓开发小白,本人目前找到两种UI交互良好而且不需要定制选取界面的方法和大家分享。

MASAteam的博客 1539

MASA Stack 1.0 发布会 —— 社区问题解答

社区关心的问题都在这统一解答

MASAteam的博客 415

MASA Stack 1.0 发布会讲稿——生态篇

首先感谢贡献者们为MASA Stack社区所作的积极贡献,这些贡献者给我们提出了很多宝贵的建议,更是积极的提交PR帮助我们一起让产品更健壮,更完善,还在各种场合推广我们的解决方案,非常给力,大家都是为爱发电,给你们点赞!

MASAteam的博客 502

MASA Stack 1.0 发布会讲稿——实践篇

大家可能都有类似排查问题的经历,有很多大公司尤其是外企,非常重视流程管理,这时候如果你的数据经过了多个业务系统,但又没有使用类似TSC的平台支撑,那么你要调查具体的问题就很麻烦,你需要向多个系统的项目经理提出申请,让他们安排具体的运维或者DBA甚至开发来协助你调查,如果涉及的数据存在涉密或者用户的个人信息,那么还需要涉及到产品和业务人员签字,那么如果这个问题的优先级不够高,一个问题调查一两周都是很常见的情况。如图是我们部分系统界面展示,包含我们的IoT后台,用户端小程序,云商城小程序,和业务端App。

MASAteam的博客 715

MASA Stack 1.0 发布会讲稿 —— 产品篇

这三种方式里Caller都出现了,如果说你的项目比较复杂,可能用了不同的协议,还是更推荐Caller,因为Caller是我们的一个构建块,它是面对接口的方式去编程的,不管你对接哪一种方式,只需要调换Contrib包,书写方式没有特别大的区别。以上三种方式是大家比较常见的,最后一种方式是还在开发中的MASA Stack 2.0 集成平台,在2.0里,我们会做一个集成平台,它会帮大家去接管内外的应用,HTTP、gRPC、Dapr在我们的集成平台里面都可以快速接进来。从最初的底层环境创建,部署和创建对应的集群。

MASAteam的博客 605

MASA Stack 1.0 发布会讲稿——趋势篇

随着时间推移,云计算技术越来越成熟,能力越来越丰富,有很多的需求可以用云的能力直接提供,所有陆续会出现一些比如PaaS这样的平台,其实就是云计算提供的中间件能力。到了2014之后,随着容器和K8s这样的技术出现,我们能在云计算平台拿到更多的能力,这是一种非常强大的平台层的抽象,我们前面讲过的不可变基础设施等都是通过容器、K8s技术实现的,之前需要花很多资源和精力搭建的中间件的能力,现在开发者可以非常容易的获取和实践,从此开发者的诉求和基础设施之间的鸿沟不断的在变小。

MASAteam的博客 304

MASA Stack 1.0 发布会圆满收官

MASA Stack 1.0 发布会圆满收官,此次发布会得到了大家的热烈反响,视频号和B站两个平台观看人数突破千人,点赞超过两万本次发布会分为五大部分——MASA Stack 1.0趋势篇、产品篇、实践篇、生态篇、圆桌座谈

MASAteam的博客 357

MASA MAUI Plugin (七)应用通知角标(小红点)Android+iOS

本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。上一篇文章我们集成了个推的消息通知,那么消息到达移动端之后,除了会在通知栏显示之外,在应用的角标也会显示未读消息的数量(小红点),然后用户点击查看消息之后,这些数字角标也可以自动消除,这个功能在MAUI中如何实现呢。

MASAteam的博客 1118

MASA Framework 事件总线 - 跨进程事件总线

跨进程事件总线允许发布和订阅跨服务传输的消息, 服务的发布与订阅不在同一个进程中在Masa Framework中, 跨进程总线事件提供了一个可以被开箱即用的程序: 提供了发件箱模式: 借助Dapr实现了消息的发布: 基于EFCore实现的集成事件日志的提供者, 提供消息的记录与状态更新、失败日志重试、删除过期的日志记录等。

MASAteam的博客 574

MASA Framework 事件总线 - 进程内事件总线

事件总线是一种事件发布/订阅结构,通过发布订阅模式可以解耦不同架构层级,同样它也可以来解决业务之间的耦合,它有以下优点松耦合横切关注点可测试性事件驱动根据需要我们可以自定义中间件,并注册到EventBus的请求管道中,比如通过增加, 将参数验证从业务代码中剥离开来,从而使得处理程序更专注于业务注册, 修改Program.cs自定义验证中间件,用于验证参数{_logger;{}{_logger?{_logger?typeName,

MASAteam的博客 491

MASA MAUI Plugin (六)集成个推,实现本地消息推送[Android] 篇

本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。鉴于现在运营需求的增强,消息推送在Android开发中应用的场景是十分常见,如电商的活动宣传、资讯类产品进行新闻推送等等,所以关于这个功能我就不过多介绍了。

MASAteam的博客 808

MASA MAUI Plugin (五)Android 指纹识别

本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。在API 级别 23 (Android 6.0)设备上引入指纹扫描仪为应用程序提供了传统的用户名/密码用户身份验证的替代方法。相较于用户名和密码,采用指纹对用户进行身份验证使应用程序安全性的实现更具隐私性,之后中添加了生物识别身份验证Biometric,增加了人脸认证相关功能。我们今天讨论的只涉及指纹认证,考虑到兼容性问题采用版本提供的。

MASAteam的博客 918

MASA MAUI iOS如何绑定微信

本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。App开发中难免不了要对接第三方平台,这些平台官网也提供了SDK供开发者使用。对于Android和iOS平台而言,只需要下载官方的SDK,按照官方说明文档进行集成就可以轻松实现了。但是对于MAUI来说,并没有官方的SDK,这个时候就需要我们绑定适用于.NET MAUI 的本机库。

MASAteam的博客 1041

MASA Framework 缓存入门与设计

提供了分布式缓存以及多级缓存的实现

MASAteam的博客 488
上一篇: 使用MASA全家桶从零开始搭建IoT平台(一)环境准备
下一篇: 使用MASA全家桶从零开始搭建IoT平台(三)管理设备的连接状态
MASA team
MASA team 数闪科技+MASA team 官方账号 数闪科技+MASA team 官方账号
博客等级 码龄5年 122粉丝 86原创
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值