简单搭建属于自己的物联网系统(三):物联网系统规划设计

物联网 · 2023-11-13 · 577 人浏览

前言

上一篇文章中我们实现了 MQTT 的基本通讯,地基已经打好,那么接下来我们正式开始搭建我们的物联网系统,首先,我们先为系统画一张蓝图,明确接下来的开发工作。

服务端

服务端相当于一个指挥中枢,管理所有接入的设备,统一下达命令,并接收设备上报的数据,是我们物联网系统的核心。

设计思路

在物联网平台中,某一类具有相同能力或特征的设备的合集被称为一款产品。而产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的属性信息。(Copy 自华为云)

本物联网平台各功能模块展示如下:

主界面

piGzI0J.png

本网站使用 Python + Flask 搭建,涉及 MySQL,Redis 数据库读写,前后端交互,Flask-login 用户鉴权,数据分析,ECharts 绘图等多方面操作。

设备管理页

piGzo79.png
显示已连接到平台的设备列表,展示其在线状态。同时前端向后端轮询设备在线状态,实时更新。

piYeGOs.png

前端轮询

piYeakV.png

后端接口

piJSF9P.png

设备详情页

显示设备基本信息。

piJScHH.png

下发命令

平台向设备下达命令,同时保存记录。

piJF6Df.png

设备监控

监控设备状态。

piJSrjO.png
基于设备上报的数据进行分析。

产品管理页

piGz7kR.png
显示所有已添加的产品。

piJSAc8.png

产品详情页

显示产品信息,提供属性和命令定义功能。

piJSEjS.png
定义属性和命令。

piJFIvq.png

支持的数据类型

平台与设备之间的通信

依靠 MQTT 协议,通过订阅不同的 Topic 实现。

已经实现的功能如下表所示。

Topic 分类 Topic 发布者 订阅者 用途
设备命令相关 Topic /commands/issue 平台 设备 平台下发命令给设备
/commands/response 设备 平台 设备返回命令响应
设备属性相关 Topic /properties/report 设备 平台 设备上报属性数据
设备状态相关 Topic /device/heartbeat 设备 平台 设备上报 Heartbeat 数据

数据库结构

piJBjFf.png

说明
device记录设备信息
product记录产品信息
history记录命令下发记录
data_{device_id}记录设备上报的数据,以 device_id 区分

至于为什么要给设备上报的数据专门做一个表存着,是因为我还加了一个数据分析功能,通过图表形式直观地展现出来数据的变化趋势。考虑到数据量的原因,设备上报数据的间隔应适当调整,10-15分钟上报一次即可。

数据库各表的结构:
piJDB7t.png

device

piYeVOA.png

product

piYe1Sg.png

history

设备侧

设备负责收集信息,并上报至平台,同时接收平台下发的命令并执行相关操作。

硬件

Orange Pi 3B 开发板
piJkkIe.png

瑞芯微RK3566 四核A55,主频1.8Ghz,Mali G52,WIFI 5.0 + BT 5.0,千兆网口,1xUSB3.0, 3xUSB2.0。

AHT10 温湿度传感器
piJ37sU.jpg

I2C接口,温度精度 ±0.3°C,湿度精度 ±2%。

LED 发光二极管
piJ81oj.jpg

GPIO接口控制。

软件

利用 Python 实现 I2C 通讯,以及 GPIO 控制,这里先放一张图,下一篇文章会详细解释。
piJB4JO.png

总结

本文简要展示了物联网系统的服务端和设备侧的软硬件,但由于时间原因,无法详细展开,请见谅。下一篇文章我们将介绍设备侧获取温湿度传感器数据以及控制LED灯开关方法。

版权声明

本文系作者原创文章,未经允许不得转载,否则保留追究法律责任的权利。https://www.scott-sloan.cn/archives/229/

物联网
Theme Jasmine by Kent Liao