智能家居控制应用层协议设计 - 基于 TCP/IP 的通信模型
智能家居控制应用层协议设计
该协议栈基于 TCP/IP 协议栈,应用于智能家居控制场景。主要包含以下功能:
- 设备发现: 支持设备发现、设备信息查询、设备状态上报等功能;
- 设备控制: 支持设备的开/关、调节亮度/音量/温度等功能;
- 场景控制: 支持场景的创建、删除、编辑和应用;
- 安全认证: 支持用户身份认证和数据加密传输。
通信模型
客户端和服务器之间采用请求-响应模型进行通信。客户端向服务器发送请求消息,服务器进行相应的处理,并返回响应消息给客户端。
消息定义
- netty message 表
| 名称 | 类型 | 长度 | 描述 | | -------------- | ----------- | ------ | ---------------------------- | | 'MessageType' | int | 1 byte | 消息类型,1 表示请求,2 表示响应 | | 'MessageVersion' | int | 1 byte | 消息版本号 | | 'MessageId' | int | 4 byte | 消息ID | | 'Payload' | byte array | 变长 | 消息负载 |
- 协议消息头定义 header
| 名称 | 类型 | 长度 | 描述 | | --------- | ------ | ------ | ------------------------ | | 'Source' | string | 32 byte | 消息来源,客户端或者服务器 | | 'Target' | string | 32 byte | 消息目标,客户端或者服务器 | | 'Timestamp' | long | 8 byte | 消息时间戳 | | 'Signature' | byte | 32 byte | 数据签名 |
其中,'Signature' 字段用于保障数据的安全性,采用 SHA256 算法进行签名。
示例消息
- 请求消息
| 'MessageType' | 'MessageVersion' | 'MessageId' | 'Payload' | | ----------- | -------------- | --------- | --------- | | 1 | 1 | 1001 | { 'type': 'device-discovery' } |
header 消息头:
| 'Source' | 'Target' | 'Timestamp' | 'Signature' | | ---------- | ---------- | ----------- | ------------------------------------------ | | 'client-app' | 'server-app' | 16330123456 | 'A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8G9H0' |
- 响应消息
| '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' |
原文地址: https://www.cveoy.top/t/topic/nx6z 著作权归作者所有。请勿转载和采集!