总览

系统业务流程

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

业务术语

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

设备所有者操作流程

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

售后安装流程

  • 代理商需要提前在系统等级安装师傅的个人信息和为之创建平台帐号。安装师傅上门后需要登记如下信息:
    • 机器唯一编码
    • 客户联系方式,如电话
    • 客户位置(微信小程序定位获取)
    • 安装相关的图片、必填信息。
  • 安装师傅登记完成后,后台工作人员可以登录平台,查看安装师傅填写的信息,若安装师傅缺了哪些资料,后台工作人员可以退回该安装工单,并要求安装师傅补录信息。

设备信息集成

  • 鉴于现有生产产线已有一套系统,iot物联网平台需要与该生产系统做数据整合。生产系统与物联网平台的整合需要生产系统方开放API接口与数据访问权限。
  • 生产系统通过RESTFUL接口暴露生产数据给iot平台,操作员可以通过iot平台,输入设备的唯一编号,iot平台通过restful接口查询生产系统的设备数据,包括:
    • 设备的生产工序
    • 测试工序
    • 关联的生产人员

用户APP功能

  • 用户购买了设备后,可以下载并安装app,通过app,用户可以完成如下操作:
    • 安装设备,用户可以通过app发起安装申请,管理员分派安装工单给指定的代理商或门店,并跟客户约定上门安装时间。
    • 设备配网,通过app的配网功能,用户可以告诉设备需要连接到哪个路由器,并与设备进行关系绑定,绑定完成后,即可控制该设 备。
    • 设备控制,通过app用户可以实现对app的参数设置,查看设备的当前状态。
    • 设备运行报表,用户可以通过app查看设备历史运行数据统计报表。
    • 设备故障,用户可以通过app查看设备的故障信息,若设备出现故障后,系统会自动创建一个工单,管理员可以根据设备的区域分派 工单给指定的代理商或门店跟进。
    • 维修工单,用户发现设备出现异常后,可以通过app发起维修工单,并在维修完结后,对维修服务进行评价。

品牌管理

  • 设备最终会划分到不同的品牌商上,品牌商需要有个性化的信息展示需求,品牌方管理员具有如下能力:
    • 查看该品牌下的所有设备,包括设备状态、设备统计等
    • 管理该品牌的所有代理商,包括代理商的添加、修改。
    • 服务门店管理,包括添加门店的添加、修改。
    • 配置app的定制化信息,例如发现页面链接、关于页面链接。
    • 查看该品牌相关的工单信息,包括安装工单、维修工单历史。
    • 安装维修师傅管理,添加维修师傅信息、创建帐号等。

超级管理员操作

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

添加后台用户

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

添加角色

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

分配权限

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

添加用户至角色

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

添加设备

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

关联设备至角色

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

查看设备历史记录

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

规则定义

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

可视化图表

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

安装工单管理

  • 管理员可以查看用户提交的安装工单信息,并可以执行如下操作:
    • 安装工单分派给不同的安装师傅。
    • 安装师傅提交的安装工单信息审核。
    • 安装工单完结。

维修工单管理

  • 当设备产生故障,并触发了故障条件,则系统会为该设备自动创建工单,管理员通过工单服务可以执行如下操作:
    • 查看当前活跃的维修工单
    • 分派工单
    • 查看工单的零件更换记录
    • 维修统计信息
    • 工单详情,包括客户的评价、维修师傅上传的信息。
    • 工单完结,把已完成的工单完结。

产品元数据管理

  • 每个产品都有相关的功能定义,零部件列表,这些信息称为元数据。管理员可以通过平台执行如下操作:
    • 添加产品
    • 产品功能点的添加与修改,例如温度功能点、火力功能点,以及该功能点对应的数据类型
    • 产品BOM表,每款产品都有一个BOM表,BOM表是为了方便维修师傅通过小程序快速选择产品维修的零部件,而且也方便管理员后期 对产品维修涉及的的零部件做数据汇总分析。
    • 产品报表,定义产品的数据报表,例如用气量报表。

系统设计

系统架构

  • 本系统采用微服务架构,把整个系统切分为多个子服务,每个服务对应该领域的业务逻辑,例如权限与认证服务完成用户的注册与帐号管理,本系统具体划分为如下几个微服务:
    • 认证与权限服务,负责权限管理、用户帐号管理、企业管理
    • 设备服务,产品的管理和设备管理、设备历史数据记录、设备控制、设备最新状态维护。
    • 代理商服务,负责管理代理商的信息、门店信息。
    • 售后管理,负责售后安装工单、售后维修工单的信息管理。

设备层

  • 设备层是每个终端都会安装一个通讯模块,可以支持4G或Wi-Fi,对于不同的应用场景,厂家可以选择哪种连接方式,对于电路板来说,两种连接方式都是使用统一的通信协议。
  • 设备终端采集的数据包括:温度数据、湿度数据等、同时终端模块还可以接收来自服务器的控制请求,执行档位调节。数据采集后,通过MQTT协议上传至服务器,并由服务器执行后续的分析与操作。

服务器层

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

第三方应用接口层

  • 本系统设计的目标是基于开放的目标原则,对于现有的系统,可以通过构造应用接口层,与第三方平台对接,本系统所有接口均遵循前后端分离原则,使用JSON作为对外的数据格式,方便第三方平台调用本系统的数据接口。

用户层

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

权限架构

  • 权限架构如下图所示:

  • 系统大致可以分为4层:

    • 总部,顶层操作人员拥有最高权限,可以查看所有设备的相关数据。
    • 品牌方,品牌方的权限仅次于总部,但只能查看该品牌相关的数据。
    • 代理商,代理商只能查看设备的状态与历史数据,还有其关联的工单信息
    • 门店,门店负责接受安装工单、填写安装和维修工单信息。没有查看设备数据的能力。