阿里云IoT简介

平台简介

1. 整体简介

IOT体系

阿里云IoT平台充当了物联网与应用层的中间人角色,接收感知层数据,最后传递给应用层。

2. 整体架构

IOT架构

阿里云平台提供的主要功能:设备接入、设备管理、安全认证、规则引擎。

最主要的应该是前2层,设备的接入、生命周期的管理、物模型、数据存储等。

基本概念:

产品(Product): 一类设备

设备(Device):唯一设备,由Product、DeviceName、DeviceSecret 唯一确定

3. 设备接入

协议:MQTT协议

mqtt.png

每个产品都定义自己的Topic类,每Topic类都有自己的设备操作权限。设备注册到Topic中,它可以往Topic中发布消息,也可以从Topic中订阅消息。

上传的协议

Alink协议:在云端与设备之间用json来上传数据

透传接入:设备直接上传二进制,由云端进行解析,并转为json

4. 设备管理

网络拓扑关系:

设备拓扑关系.png

网关可以管理子设备,子设备通过网关才能与平台相连。

物模型:

物模型描述产品是什么,能做什么、可以对外提供哪些服务(接口),包括属性、服务、事件。

物模型是对设备的建模,通过属性、服务、事假来统一管理设备

5. 规则引擎

当设备基于Topic与平台进行通信时,用户可以使用规则引擎对设备数据进行处理和转发 。

转发操作包括:

  • 存储
  • 流计算
  • 转发到函数计算中进行事件计算
  • 转发到另外一个Topic中,实现M2M
  • 转发到MQ中,实现数据消费

感知层

1. STM32简介

产品布局:

STM32产品布局.png

这里使用的主控芯片是STM32L4R5

stm32生态.png

整个生态由软硬件组织,包括开发板、开发软件、固件等

整个板子包括:主控板、传感器板、WIFI板

arduino uno接口MCU与其他模块的连接

STMCubeMX工具帮助生成工程,包括芯片选择、外设引脚定义、驱动选择、中间件选择等等部分

2. Paho MQTT

2-1 案例

场景.png

逻辑:

Ali平台: 创建Product -> 创建Device -> 配置Topic类(对device而言的发布或者订阅)-> 配置服务端订阅

嵌入式: 配置wifi -> 配置阿里云的Device -> 主循环(检测数据、判断温度、发布报警事件、发布温度属性)-> sub回调(清除报警、设置阈值)

web端:显示:显示设备状态、报警情况、当前温湿度数据、历史数据查询 --> 控制:报警清除、设置阈值

2-2 协议简介

MQTT协议(Message Queuing Telemetry Transport): 消息队列遥测传输

MQTT场景.png

特性:

  • 协议小
  • 异步通信,解耦通信双方
  • 基于TCP

2-3 通信模型

mqttt通信模型.png

MQTT的Client端既可以是publisher,也可以是Subscriber

连接成为Session,通过Topic进行message转发,这里Topic等价与Queue,每个message都有Topic

Topic也是层级结构,支持通配符

2-4 协议与部分报文

  • 协议

mqtt报文格式.png

messageType是14种报文

  • Connect报文

    connect报文.png

这里有个will,翻译过来是遗嘱,就是客户端断开时候,会通知的topic

  • subscribe报文

    Subscirbe报文.png

    订阅对象是Topic

    在一个报文中可以订阅多个Topic

  • publish报文

    publish报文.png

    发布的对象是message

    QoS级别:

    0: 最多收到一次,最多发送一次,不需要应答,个别数据丢失没问题的场景

    1: 最少收到一次,保证对方一定收到,接收方需要pubBack。消息会有重复,主流的平台没有实现

    2: 仅收到1次

​ retain:

​ 等它置位时,服务器会保留它(仅保留最近一次带retain标志的)

​ 阿里云目前并不支持:will、retain以及QoS2级别

3. 软件结构

嵌入式软件结构.png

整个嵌入式部分也分成3部分,底层驱动、中间件、应用程序。

应用层

这里不对应用层进行介绍了,简单写一下应用层的用到的技术

后端:

spring-boot + mybatis + mysql

后端引入阿里云IoT的3个依赖包:

  • aliyun-java-sdk-core:阿里云java底层SDK
  • aliyun-java-sdk-iot: 用于调用云端openAPI,实现产品管理、设备管理、Topic管理
  • iot-client-message:用户服务器通过Http/2 接收阿里云IoT平台推送的消息

过程:

- 创建DeviceMessageRegister类,在spring初始化bean的时候,就会调用afterPropertiesSet方法,建立与IoT平台连接,基于AccessKey进行身份认证  
- 订阅主题  
- 监听,通过SDK消息回调获取数据  
- 根据不同主题,操作数据库  

前端:

react.js + umi + ant design + dav

umi类似于webpack+create-react-app

dav是对redux的封装

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×