系统业务流程

  • 本章节主要描述系统关键的业务流程,旨在梳理流程,为后续的系统设计提供理论基础。

业务术语

  • 产品
    • 产品是一类设备型号的统称,包括系统中的传感器,电机参数等。系统为每个产品分配一个产品ID(product ID)
  • 设备
    • 定义了产品后,设备是指属于该产品的真实物理设备。每个设备在平台上都有一个设备ID(device ID),同时每个设备都配备一个物联网模块,例如4G模块,每个模块都在物联网平台下都有一个唯一的物联网ID(iot device ID),和唯一的MAC/IMEI地址
  • 设备状态
    • 设备状态指设备是否在线。在线即设备内嵌的模块已链接网络,并成功登陆物联网IoT平台。离线即设备处于脱机状态
  • 产品属性
    • 产品属性用于定义产品的功能点,例如开关机,温度,档位等等属性。属性的类型有三种:整数,浮点数,字符串。
  • 设备属性
    • 设备属性是基于时间的一系列产品属性的值,例如产品定义了开关机属性,那么某一台设备的当前的开关机属性为开机或关机状态(值对应1或0)。设备属性是与时间戳密切相关。某个时间点对应的设备属性,即为设备的属性快照。
  • 设备历史记录
    • 设备每次改变状态后,上报数据到物联网平台,物联网平台都会记录该时刻的数据,历史数据可以回看和进行后续的分析。历史数据存放有效期根据该设备上报数据的频率和数据大小而定。
  • 管理员
    • 物联网数据管理平台为每个管理员开通一个账户,该账户可以操作该企业内的所有设备和数据。
  • 设备所有者
    • 设备所有者指的是设备的拥有者,该设备所有者只能查看该用户关联的设备。设备所有者可以下发控制指令控制设备,可以查看设备的历史记录。
  • 设备分组
    • 管理员可以创建设备分组,并把设备添加到该分组内,方便分组管理设备。另外,权限设置中,也可以把设备组分配给指定的用户,该用户即可操作该组内的设备。
  • 时序数据库
    • 时序数据库是专门用于存储针对时间维度数据的数据库,每个数据记录都有一个时间戳用于标记数据采集的时间,同时指标会有一组关联的label,用于描述该数据的关联属性。

设备所有者操作流程

  • 消费者购买了设备后,每个设备都配有一个独立的二维码,用户可以打开微信,使用扫一扫功能打开数据管理员平台APP。
    • 若用户尚未注册,则显示注册页面,APP通过授权读取用户的手机号和头像等信息,并请求服务器创建账号。
    • 用户登陆后,APP识别用户扫描的唯一二维码编号,通过后台比对用户的身份和设备的绑定关系,若绑定关系存在,则允许该用户访问该设备;若绑定关系不存在,则提示“没有权限”。
    • 用户打开设备控制界面后,用户可以查看设备的历史数据即图表。
    • 设备定期或状态变化后,主动上传数据,用户可以及时通过APP查看设备的状态。

续费流程

  • 每个终端盒子使用4G网络,涉及到终端通信费用,同时每个终端盒子涉及到维护成本,需要向用户收取年费。
  • 收费使用微信支付,每个设备可以单独配置年费套餐,若没配置,则使用系统默认的年费套餐。用户登陆APP后,可以选择购买年费选项,并在线支付。
  • 支付完成后,若终端盒子被锁定,则执行解锁功能。
  • 注意:
    • 若用户长时间欠费,可能导致流量卡被回收,导致无法充值。
    • 流量卡充值只能通过线下转账方式操作。即用户购买套餐后,管理员需要联系流量卡供应商,线下支付充值。

后台操作流程

  • 管理员可以通过后台实现如下操作:
    • 添加后台子用户。
    • 添加角色,角色是系统的最小的权限控制单元。每个角色关联多个权限,同时每个角色可以有多个子用户。
    • 分配系统预设权限给角色,例如查看设备的权限,查看产品的权限等等。
    • 添加用户至指定角色。
    • 添加设备
    • 关联设备至角色
    • 添加设备分组
    • 设备分组绑定设备
    • 用户授权设备分组或指定设备

添加后台用户

  • 开发者可以通过后台,自行添加子管理员。子管理员的账号只能被该开发者或系统管理员看到。添加子管理员方式与注册基本一致,通过手机号+密码,或邮箱+密码的方式添加。
  • 子管理员默认没有权限访问后台数据。

添加角色

  • 角色是权限管理的核心,角色可以包含多个用户,角色也可以分配多个权限。同一个角色内的用户有相同的权限。每个用户只能属于一个角色。

分配权限

  • 系统预设一系列权限。管理员可以可以自行添加角色,并把该角色的权限授予新添加的角色,实现角色的继承。

添加用户至角色

  • 后台用户需要分配至一个角色后,方可访问后台的数据。每个后台用户只能归属一个角色。

添加设备

  • 管理员可以通过后台,添加设备,其中包括如下设备信息:
    • 模块对应的设备ID,必填
    • 设备的名称,必填
    • 设备的型号model,选填

关联设备至角色

  • 新增的角色默认无法访问任何设备数据。企业管理员需要把设备添加至指定的角色后,该角色下的用户方可访问该设备的数据。

添加设备分组

  • 管理员可以创建设备分组,并把设备分配至指定的分组中,实现分组管理,该分组也可以授权给指定用户,该用户可以访问该组内所有设备的信息。

查看设备历史记录

  • 管理员可以通过后台查看某台设备的历史记录信息,导出历史记录,聚合统计等。

规则定义

  • 系统管理员可以通过后台自定义指标监控的规则,例如过去5分钟内,温度高于30度,则触发短信通知管理员用户。监控规则定义包含了两部分:
    • 指标监测条件,例如过去5分钟,温度平均值 > 30度
    • 触发动作,例如发送短信通知用户,温度异常。

可视化图表

  • 系统提供可视化的方式,让管理员可以查看当前系统的历史与当前状态。可视化图表包括:
    • 过去n小时的温度曲线图
    • 过去n天,每天触发报警的次数

系统设计

系统架构

  • 本系统采用微服务架构,对于Wi-Fi/4g共享设备基于MQTT 通信协议,设备通过mqtt链接到MQTT Broker服务器后,数据由Broker转发至物联网平台,并把数据存储于数据库中。

设备层

  • 设备层是每个终端都会安装一个通讯模块,用于与服务器通信,模块同时会配备一个mcu,若用户需要可以用于收集来自485的传感器采集信号。设备终端采集的数据包括:温度数据、湿度数据等、同时终端模块还可以接收来自服务器的控制请求,执行电机的档位调节。数据采集后,通过MQTT协议上传至服务器,并由服务器执行后续的分析与操作。
  • 设备同时监控来自用户的控制请求,当用户下发电机转速控制指令后,执行对电机的转速调节操作。

服务器层

  • 服务器采用微服务架构,MQTT broker负责消息的订阅与发布,同时实现群组控制。
  • 其中基础设施层包括时序数据库、关系数据库、消息队列,用于存储系统中的数据。
  • 设备管理模块包括如下几个功能:
    • 设备的绑定接口、解绑接口
    • 设备的当前状态数据获取接口
    • 设备的历史数据查询接口
    • 设备的群组接口
  • 规则引擎功能包括:
    • 指标表达式定义,统计时间维度和对应指标的汇总值,支持如下aggregate操作:avg平均值、min最小值、max最大值、sum求和,另外定义规则的阈值,当规则求值超过或低于阈值时,自动触发规则动作,例如发送短信通知用户。
    • 联系人管理,用于保存通知的对象
  • 任务调度系统功能包括:
    • 执行定时任务,计算汇总报表
    • 执行延时任务

用户层

  • 对于用户终端,可以通过APP进行设备的绑定和控制操作,APP端包括如下功能:
    • 用户登陆注册
    • 设备的绑定与解绑
    • 设备状态的读取,如当前温度等数据
    • 设备控制,包括大棚点击的转速调节、转动时间调节。
    • 设备历史状态查询
  • 用户除了可以通过APP实现移动端的简单控制与数据查看外,还可以通过电脑端网页实现更多的功能与报表查看操作。网页端功能包括:
    • 数据大屏,展示当前所有设备的传感器数据、过去7天的传感器历史数据、过去24小时的分钟数据等
    • 用户管理,查看系统当前的注册用户信息
    • 设备管理,查看系统的设备信息、设备状态、设备控制等操作
    • 设备群组,查看/建立/解散群组、实现群组控制功能
    • 报警规则,用户可以定义报警规则,根据用户定义相关的参数阈值规则,超过或低于阈值时,自动发送短信通知管理员

权限架构

  • 权限架构如下图所示:

系统功能模块表