系统业务流程

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

业务术语

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

设备出厂流程

  • 设备出厂过程中需要配置每台设备对应的品牌和代理商信息,绑定品牌信息和代理商信息需要在OEM厂家生产过程中进行配置,整个生产交付流程如下图所示:

  • 凝卓批量生产Wi-Fi模组,每个模组附带一个唯一的二维码编码

  • 交付电控板厂家前,需要把该批次的模组的唯一编码批量导入到平台

  • 电控板厂家采购Wi-Fi模组,并生产电路板。电路板成品交付给OEM厂家前,需要在外观保留电路板的二维码。

  • OEM厂家接到订单后,通过后台添加品牌信息,包括品牌的logo、描述文字、网页、售后电话等信息。

  • OEM厂家创建代理商帐号。

  • OEM厂家采购成品电路板,并组装成品,组装过程中,扫描电路板上的唯一二维码,并绑定成品的品牌;若需要授权给代理商,则需要进一步关联产品给代理商帐号。 产品出库。

设备退货流程

  • 若OEM厂家需要退货给电路板厂家,需要附带退货电路板的二维码信息,方便平台管理员批量擦除设备绑定的品牌信息。

消费者操作流程

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

后台操作流程

  • 管理员可以通过后台实现如下操作:
    • 添加后台子用户。
    • 添加OEM厂家帐号,配置OEM厂家对应的错误代码信息。
    • 添加品牌信息,例如品牌的网页、logo、售后电话等信息。
    • 添加代理商信息
    • 添加角色,角色是系统的最小的权限控制单元。每个角色关联多个权限,同时每个角色可以有多个子用户。
    • 分配系统预设权限给角色,例如查看设备的权限,查看产品的权限等等。
    • 添加用户至指定角色。
    • 添加设备
    • 关联设备至角色

添加后台用户

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

添加角色

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

分配权限

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

添加用户至角色

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

添加设备

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

关联设备至角色

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

查看设备历史记录

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

规则定义

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

可视化图表

  • 系统提供可视化的方式,让管理员可以查看当前系统的历史与当前状态。可视化图表包括:
    • 温度曲线图
    • 压力曲线图
    • 电压曲线图
    • 电流曲线图
    • 频率曲线图
    • 开度曲线图
  • 可视化图表以时间点为关键字存储,可以通过指定时间范围,查看该时间范围内的数值变化。

系统设计

系统架构

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

设备层

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

服务器层

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

用户层

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

权限架构

  • 平台用户分为4种角色,分别是:
    • 平台总管理员
      • 创建用户
      • 创建角色
      • 创建/修改OEM厂家
      • 创建/修改品牌
      • 批量擦除模组的品牌信息(退货)
      • 查看所有设备的信息、包括当前状态、设备故障、设备运行日志。
      • 其他系统权限
    • OEM厂家
      • 查看已绑定的设备的信息,如设备当前状态、设备故障、设备运行日志等信息
      • 创建/修改品牌信息,如logo、网页等信息
      • 创建用户,并配置用户的角色为:品牌方或代理商
      • 授权用户给指定的品牌
      • 绑定设备的品牌
    • 品牌方
      • 修改已绑定的品牌的相关信息,如logo、网页连接、售后电话等。
      • 查看已绑定品牌下的设备信息,如设备当前状态、设备故障、设备运行日志等信息。
    • 代理商
      • 查看已绑定品牌下的设备信息,如设备当前状态、设备故障、设备运行日志等信息。
  • 权限架构如下图所示:

系统类图

业务流程的系统描述

  • 以下将以系统设计的角度描述系统重要的操作流程,以验证系统的设计合理性。

平台管理员操作

添加OEM厂家角色

  • 角色表(Role)添加记录,并命名为“OEM厂家”,permissions字段添加:创建品牌、修改品牌信息、添加平台用户、查看角色、查看设备信息、授权设备给代理商。
  • 资源权限表(ResourceRole)添加记录,resourceType=role,resourceId=品牌角色ID,roleId=步骤1添加的角色ID,permissions=role.view
  • 资源权限表(ResourceRole)添加记录,resourceType=role,resourceId=代理商角色ID,roleId=步骤1添加的角色ID,permissions=view

添加品牌角色

  • 角色表(Role)添加记录,name=“品牌方”,permissions字段包括:修改品牌信息、查看设备信息。

添加代理商角色

  • 角色表(Role)添加记录,name=“代理商”,permissions字段包括:查看设备信息。

添加OEM厂家

  • 创建平台用户,添加记录到User表。用户密码方式登录。
  • 授权角色给用户,添加记录到UserRole表,userId = 步骤1的用户ID,角色ID = OEM厂家角色ID。

添加产品

  • 产品表(Product)添加记录,name=产品名称
  • 产品故障定义表(ErrorCodeDefinition)添加故障代码映射关系。

OEM厂家操作流程

查看角色

  • 查找ResourceRole表,过滤条件:
    • roleId=当前用户的所有roleId
    • 且resourceType=role
    • 且permissions包含view

添加品牌

  • 品牌表(Brand)创建一条记录
  • 用户表(User)添加一条记录,品牌方的登录帐号信息
  • 用户角色关系表(UserRole)添加一条记录,userId = 步骤2创建的用户ID,roleId = 品牌角色ID。

添加代理商

  • 代理商表(Dealer)添加一条记录
  • 用户表(User)添加一条记录
  • 用户角色关系表(UserRole)添加一条记录,userId = 步骤2创建的用户ID,roleId = 代理商角色ID。
  • 资源权限表(ResourceRole)添加记录,resourceType=dealer,resourceId=步骤1代理商ID,roleId=OEM厂家角色ID,permissions=[view, edit]。
  • 资源权限表(ResourceRole)添加记录,resourceType=dealer,resourceId=步骤1代理商ID,roleId=代理商角色ID,permissions=[view]。

绑定设备品牌

  • 查找用户的所有角色,查看permissions是否包含device.brand.bind
  • 添加记录到设备品牌表(DeviceBrand),brandId = 品牌ID,设备ID。
  • 资源权限表(ResourceRole)添加记录,resourceType=device,resourceId=设备ID,roleId=品牌方角色ID,permissions=[view]。

授权设备给代理商

  • 查找用户的所有角色,查看permissions是否包含device.dealer.authorize
  • 资源权限表(ResourceRole)添加记录,resourceType=device,resourceId=设备ID,roleId=代理商角色ID,permissions=[view]。

查看设备列表

  • 查找ResourceRole表,过滤条件:
    • roleId=当前用户的所有roleId
    • 且resourceType=device
    • 且permissions包含view
  • 搜索设备表(Device),id in 步骤1返回的resourceId。

查看设备当前状态

  • 查找ResourceRole表,过滤条件:
    • roleId=当前用户的所有roleId
    • 且resourceType=device
    • 且permissions包含view
  • 搜索设备表,返回设备的当前属性状态

设备OTA

流程描述

  • 流程描述
    • 把需要升级的ota文件放到平台,并发起升级
    • 模块通过http把文件分段下载并通过串口通知设备mcu
    • 设备mcu通过与模块的ota串口协议的实现,向模块应答并完成升级流程
    • Mcu升级完成切换程序时上报程序版本结束升级。
    • 串口协议格式和分包大小待定。
  • 串口流程大致如下: