智能家居控制应用层协议设计

该协议栈基于 TCP/IP 协议栈,应用于智能家居控制场景。主要包含以下功能:

  1. 设备发现: 支持设备发现、设备信息查询、设备状态上报等功能;
  2. 设备控制: 支持设备的开/关、调节亮度/音量/温度等功能;
  3. 场景控制: 支持场景的创建、删除、编辑和应用;
  4. 安全认证: 支持用户身份认证和数据加密传输。

通信模型

客户端和服务器之间采用请求-响应模型进行通信。客户端向服务器发送请求消息,服务器进行相应的处理,并返回响应消息给客户端。

消息定义

  1. netty message 表

| 名称 | 类型 | 长度 | 描述 | | -------------- | ----------- | ------ | ---------------------------- | | 'MessageType' | int | 1 byte | 消息类型,1 表示请求,2 表示响应 | | 'MessageVersion' | int | 1 byte | 消息版本号 | | 'MessageId' | int | 4 byte | 消息ID | | 'Payload' | byte array | 变长 | 消息负载 |

  1. 协议消息头定义 header

| 名称 | 类型 | 长度 | 描述 | | --------- | ------ | ------ | ------------------------ | | 'Source' | string | 32 byte | 消息来源,客户端或者服务器 | | 'Target' | string | 32 byte | 消息目标,客户端或者服务器 | | 'Timestamp' | long | 8 byte | 消息时间戳 | | 'Signature' | byte | 32 byte | 数据签名 |

其中,'Signature' 字段用于保障数据的安全性,采用 SHA256 算法进行签名。

示例消息

  1. 请求消息

| 'MessageType' | 'MessageVersion' | 'MessageId' | 'Payload' | | ----------- | -------------- | --------- | --------- | | 1 | 1 | 1001 | { 'type': 'device-discovery' } |

header 消息头:

| 'Source' | 'Target' | 'Timestamp' | 'Signature' | | ---------- | ---------- | ----------- | ------------------------------------------ | | 'client-app' | 'server-app' | 16330123456 | 'A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8G9H0' |

  1. 响应消息

| 'MessageType' | 'MessageVersion' | 'MessageId' | 'Payload' | | ----------- | -------------- | --------- | -------------------------------------------------------- | | 2 | 1 | 1001 | { 'devices': [{ 'id': '1', 'name': 'light', 'status': 1 }] } |

header 消息头:

| 'Source' | 'Target' | 'Timestamp' | 'Signature' | | ---------- | ---------- | ----------- | ------------------------------------------ | | 'server-app' | 'client-app' | 16330123457 | 'B1C2D3E4F5G6H7I8J9K0L1M2N3O4P5Q6R7S8T9U0' |

智能家居控制应用层协议设计 - 基于 TCP/IP 的通信模型

原文地址: https://www.cveoy.top/t/topic/nx6z 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录