物联网通信服务平台的MVP设计

1. 整体目标 【物联网通信服务平台的MVP设计】MVP(最小可行化产品)用于演示产品基本功能,具备完整的用户使用流程。目的在于让目标用户和投资人了解产品的基本使用,获得对产品的整体功能认知。
2. 基本功能 用户利用平台提供的硬件搭建一个自动感应灯系统,即当光线过暗时,自动点亮灯,同时可通过手机端设置光线感应的阈值等参数,并可手动点亮灯。
3. 包含模块

  • 光线传感器
  • LED灯及驱动电路
  • 执行模块
  • 数传通信模块(成对)
  • 网关
  • 云端服务(iot平台、函数计算、表格存储、任务模块等)
  • 用户控制台
4. 执行模块 4.1 组成
  • 模拟量输入
  • 数字量输入
  • IO输出
  • I2C预留
  • 串口(1路用于下行,1路用于上行)
  • 电池仓
  • 开关
4.2 流程
  • 每隔5秒钟采集传感器数据并通过上行串口转发
  • 监测下行串口的数据输入并通过上行串口转发
  • 监测上行串口的数据,根据数据内容决定转发至下行串口或操作IO输出
4.3 协议
  • 协议头,1字节,0xAB
  • 模块ID,4字节,大端模式
  • 功能码,1字节,上行0x01,上行0x02
  • 数据通道,1字节,0x00 ~ 0x0f为模拟量,0x10 ~ 0x1f为数字量,0x20 ~ 0x2f为IO输出,0x30 ~ 0x3f为下行串口
  • 数据区长度,1字节,0~20
  • 数据区,N字节
  • 校验码,1字节,前面所有字节相加后&0xff
  • 结束符,1字节,0xCD
4.3.1 传感器 传感器的值,默认为4个字节表示的float型,特殊传感器另行约定。
4.3.2 IO输出 IO输出采用1字节表示,00 表示断开,01 表示接通。
当首次上电时,执行模块上报一次当前IO的输出状态;
云端下发控制命令时,一次下发一个IO输出状态;
执行模块响应完云端下发的控制命令后,应立即上传本次执行的IO输出状态。
举例:某个类型的执行模块,具备1个IO输出。上电后,执行模块上报当前IO状态为 00;云端下发命令使能该IO输出,执行模块响应后,上报最新状态为 01。
4.4 设计
4.4.1 执行模块电路板 物联网通信服务平台的MVP设计
文章图片
示意图(不完全)
  • MCU
  • 数字端口 *3
  • 模拟端口 *1
  • 继电器输出,无源
  • UART 端口1,用于上行通信
  • UART 端口2,用于下行通信
  • I2C 端口 *1,预留
  • 状态指示灯*1,三色
  • 复位按钮*1
  • 电池座,JST2.0,外接锂电池
  • Micro USB,为主板供电或与 PC 通信
4.4.2 材料
  • 光线传感器(数字量)
    https://item.taobao.com/item.htm?spm=a230r.1.14.221.507059d3rv0qNz&id=567803723788&ns=1&abbucket=19#detail
  • Led灯+电池
  • 外壳(115*85*35mm)
    https://item.taobao.com/item.htm?spm=a230r.1.14.187.30e679b7Liidqh&id=521975922495&ns=1&abbucket=19#detail
  • 锂电池
    https://item.taobao.com/item.htm?spm=a230r.1.14.222.169167f6jfgJh5&id=528235852444&ns=1&abbucket=19#detail
5. 通信模块
  • 数据线直连(有线直连)
  • 成对的数传电台(1v1无线连接)
  • lora网关(1vN无线连接)
6. 网关模块 6.1 组成
  • 上行通信模块
  • 下行串口
6.2 流程
  • 实现与云端的链路维护
  • 监测下行串口的数据,处理后通过上行通信模块转发至云端
  • 获得上行通信模块的下行数据并转发至下行串口
6.3 协议
  • 上行
    抽取最终执行模块的ID、通道号、数据长度和数据内容
    形成json后发送至云端
  • 下行
    解析json并形成二进制数据下发给对应的执行模块
  • Json格式
{ "did":"aabbccdd", //执行模块的序列号 "cid":12,//执行模块连接传感器的通道号 "data":"3132"//执行模块上传的字节流转字符 }

7. 云端服务 7.1 组成
云端服务搭建在阿里云平台上,下述模块均为阿里云计算产品
  • iot平台
    用于接入网关设备,负责设备管理、链路维护、数据预处理、数据路由等功能
  • 函数计算FC
    用于处理iot平台传来的数据,进而存储或转发
  • 表格存储TS
    非关系型数据库,用于存储物联网数据
  • ECS
    云服务器,用于运行web应用及关系型数据库,主要应用有用户控制台、平台官网、用户文档、社区论坛等
7.2 流程
  • 网关自动连接iot平台,自动进行链路维护
  • 传感器数据经网关传至iot平台后,经规则引擎,转发至函数计算FC
  • FC根据TS中传感器、网关、及用户的关系,对数据进行存储或转发
  • ECS运行的用户控制台,可向用户提供硬件管理、数据展现、命令下发、任务设置等功能
  • 下行命令由用户控制台发出,经iot平台直接转发至网关,最终到达执行模块和动作机构
8. 用户控制台 8.1 功能
  • 一键登录
  • 绑定网关
  • 配置数据点
  • 配置自动化任务
  • 配置开放平台
9. 典型流程 9.1 用户快速使用
  • 清单:光线传感器、LED灯模块、执行模块、数传电台(成对)、网关、微信
  • 将光线传感器、LED灯模块接入执行模块的D1和IO1
  • 将2个数传电台分别接入执行模块的上行通信端口和网关的下行通信端口
  • 打开执行模块的开关,并给网关上电
  • 微信扫描网关上的二维码,跳转网关绑定页面
  • 确认绑定后,跳转网关详情页
  • 网关详情页展示了网关连接了一个执行模块,执行模块接口D1有传感器接入,并提示用户配置该传感器的类型
  • 用户配置该传感器为光线传感器
  • 用户在执行模块IO1端口上增加一个LED灯模块
  • 配置自动化任务:用户设置当光线传感器过暗时,对LED灯执行点亮操作;过亮时自动熄灭
  • 测试:用手指遮住光线传感器,LED灯点亮;移开手指则LED灯熄灭
9.2 数据流
  • 执行模块周期性检测各输入端口,如模拟接口、数字接口、下行串口、I2C等
    检测到
  • 执行模块周期性检测上行串口的数据
  • 执行模块在接收到输入端口数据时,组织报文通过上行串口发送给网关,协议见4.3
  • 网关解析执行模块的上行数据,并打包成json格式上传至iot平台,协议见6.3
  • iot平台收到数据并转发给FC
  • FC记录该条数据到表格存储TS中,并根据TS中的配置向ECS转发或向用户设置的url转发
  • ECS检查该执行模块的端口是否已配置好传感器类型,如是则根据规则展示数据,如否则提示用户配置
  • 任务分为定时任务和事件触发任务,MVP阶段暂仅实现事件触发任务
  • 事件触发任务由FC实现。FC收到传感器数据时,检查表内是否有相应任务,如有,则执行相应操作
  • FC有向执行模块的动作机构下发命令的函数
10. 数据库表的设计 10.1 流程
  • 上行数据流
    • 上行数据到达iot进而到FC,FC解析到数据的gateway、device、channel,FC检查gateway表中是否绑定了device。如否,则将device加进去,并更新device表(包含gateway信息)
      更新channel表,将实时数据记录进去
  • 用户控制台的gateway页面
    • device列表(查询gateway表的dev_ids)以及手动增加按钮(按下后将录入的device id更新到gateway表的dev_ids中)
    • device的接口列表(根据device的id查询device表,获得device所具备的基本信息,包括所有接口数量、类型、注册时间等)
    • device接口所接传感器的类型(根据gateway、device、channel查询channel表,根据sensor_format字段格式化原始数据为可读值)
    • 未连接传感器的device接口,显示配置按钮,按下后展示所有传感器类型(更新channel表,将sensor的类型信息等添加进去)
    • 实时数据流调试窗口
10.2 表结构
  • user
  • gateway
  • device
  • channel
  • sensor
11. 场景化任务 根据用户场景化需求的不同,允许设置一到多个条件,用来触发一到多个动作。
条件类型包括:
  • 传感器的值
  • 时间段范围
  • 周期性时间点
  • 互联网应用模块
为简化起见,条件仅可设置为全【与】,不设置【或】; 动作为串行依次执行。
用伪代码表示为:
if ( 条件A && 条件B && 条件C ) { 动作1; 动作2; 动作3; }

    推荐阅读