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:設備端、用戶端的流程設計

客戶端通過接口訪問雲平臺,可以實現多種終端的實時監控,設備也可以將姿態記錄到遠程數據庫。其系統架構如圖所示:

這裏寫圖片描述

  • 設備與平臺流程圖
  • 這裏寫圖片描述

  • 用戶與平臺流程圖
    這裏寫圖片描述

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