SmartBed2.0的上位机部分设计构思

SmartBed2.0的上位机部分(草稿)

一、整体框架


更新:2016-10-29
更新:2016-11-9 通信协议
更新:2016-11-17 通信协议补充
更新:用户端和设备端具体业务流程


  • 业务逻辑

简单来说,主要实现一个可以监控护理床姿态的上位机软件。SmartBed1.0版本开发了一款安卓APP,已经实现了局域网内的通信,通过TCP与设备透传,实现指令和反馈的传输。

并且通过workerman框架初步实现了远程传输。但是指令只是通过服务器简单的转发,没有实现后端管理系统的开发。


后面的任务就是实现基于云平台管理的SmartBed2.0

  • 远程模式
    这里写图片描述

  • 多种控制终端

这里写图片描述


  • 时序图
Created with Raphaël 2.1.2用户、设备连接建立的过程用户主机用户主机服务器主机服务器主机设备主机设备主机连接请求,携带PID(设备标识符)记录PID允许连接发送设备状态信息解析状态记录到数据库用户在某刻时间段后登录登录,携带个人信息记录个人信息登录成功发送待连接设备的PID,寻找设备(用户标识符)如果该设备在线连接成功发送数据库记录的设备当前状态发送指令动作完成,记录状态

二、升级功能(草稿)

(一)设备端

  • 开机需要给服务器发送唯一PID标识以便于匹配
  • 需要发送设备状态信息,状态的实时更新
  • 指令结构

(二)服务器端

  • 服务器将作为远程模式下整个框架的中心
  • 服务器逻辑改变
  • 服务器需要添加数据库

(三)用户端

  • 布局框架
  • 通信框架
  • 个人信息
  • 授权

三、需要解决点(草稿)

  1. 通信协议
  2. 服务器编写
  3. 安卓界面
    。。。。

进度1:通信协议

协议的作用

由于TCP是基于流的,服务端应该检查数据是否是完整的,因为可能只是一个请求的部分数据到达服务端,甚至可能是多个请求连在一起到达服务端。如何判断请求是否全部到达或者从多个连在一起的请求中分离请求,就需要规定一套通讯协议。

  • 分包问题
  • 粘包问题

参考:

自定义通信协议

基于TCP socket下自定义应用层通讯协议。协议格式:

  • 区分数据边界的标识
  • 数据格式定义

Workerman支持的协议

  • HTTP协议
  • websocket协议
  • text协议
  • frame协议
  • ws协议

前端支持的协议(草图)

协议类型 移动端 Web端(浏览器) 设备端
http协议
WebSocket协议 √(部分)
自定义协议(text协议)

各协议详解




  • Text
    分数据边界的标识为换行符”\n”(注意请求数据本身内部不能包含换行符),
    数据格式为Json

总结

  1. 方案一:采用Text自定义协议
    • 好处:协议统一
    • 弊端:上位机部分需要解析实现自定义通信协议,不稳定。
  2. 协议一采用websocket协议,协议二采用text协议
    • 好处:支持长连接,有websocket库
    • 弊端:服务器需要支持多协议通信
  3. 方案三:采用http协议
    • 好处:协议统一
    • 弊端:Request = Response , 在HTTP中一个request只能有一个
      response。而且这个response也是被动的,不能主动发起。

进度1.1:补充协议

以上是从workerman所支持的通信协议的角度对协议的思考。下面将从物联网通信协议的角度出发:
- 物联网协议比较 MQTT CoAP RESTful/HTTP XMPP备份

mqtt协议

MQTT是IBM开发的一个即时通讯协议。MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。

  • 轻量级的 machine-to-machine 通信协议。
  • publish/subscribe模式。
  • 基于TCP/IP。
  • 支持QoS。
  • 适合于低带宽、不可靠连接、嵌入式设备、CPU内存资源紧张。
  • 是一种比较不错的Android消息推送方案。
  • MQTT有可能成为物联网的重要协议。

参考:

例子:

总结:

  • 下位机需要实现mqtt通信协议
  • workerman没有对应的mqtt服务,需要使用Mosquitto
  • 局域网模式下通信过于复杂

    进度1.2:协议测试

  • websocket协议在安卓下测试
    这里写图片描述

  • text协议在安卓下测试
    这里写图片描述

进度2:设备端、用户端的流程设计

客户端通过接口访问云平台,可以实现多种终端的实时监控,设备也可以将姿态记录到远程数据库。其系统架构如图所示:

这里写图片描述

  • 设备与平台流程图
  • 这里写图片描述

  • 用户与平台流程图
    这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章