Skip to content

protocol-通信协议驱动

通信协议层驱动库是一种主要面向 TCP 通信方式提供的编解码补充能力。

以 Http、WebSocket、Mqtt 为例,虽然这些协议都标准的 TCP 应用层协议。但其 Body/Payload 承载的数据格式和业务含义,却因人而异、因场景而异、因设备而异。

通信协议驱动库位于res/library/protocol目录,该目录下的每一个 lua 文件的文件名便代表该驱动的 protocolKey

  • Directorydriver-box
    • Directoryres
      • Directorylibrary
        • Directoryprotocol
          • http_server_环境传感器.lua
          • http_client_开关.lua
          • websocket_照明.lua
          • mqtt_水电气表.lua

其工作原理与 设备驱动库 大致相同,都是通过在 Lua 脚本中内置 encodedecode 函数, 实现通信数据与 driver-box 内置标准化数据结构的互转。

local json = require("json")
-- 上行解码
function decode(raw)
print("raw: "..raw)
local data = json.decode(raw)
local devices = {
}
return json.encode(devices)
end
-- 下发指令
function encode(deviceId, rw, points)
local payload = {
}
return json.encode(payload)
end