RTOS RS485 酒店版对接协议
AI 语音面板 / 智能家居面板 —— 第三方 RS485 客控设备对接协议
| 版本 | 日期 | 改动记录 |
|---|---|---|
| V1.0 | 2022-09 | 初始版本(PDF 版) |
| V2.0 | 2026-09-22 | 配置头扩展为 #波特率::插件标志::指令间隔;新增梦幻帘(0x50)、开机音乐(0x51)、RS485 电视(0x52)、进度窗帘(0x53);新增 SIP 配置、电视频道表;补充屏幕就绪通知帧与上电查询说明 |
1. 概述
本文档描述 AI 语音屏(下文简称屏幕)与第三方 RS485 客控设备/RCU(下文简称设备)之间的串口通信协议。
- 物理接口:RS485,半双工
- 波特率:默认 9600(可通过配置文件修改,见 2.1),数据位 8,无校验,停止位 1
- 帧长:固定 8 字节,连续发送,无转义
1.1 传输方向约定
| 帧头 | 方向 | 说明 |
|---|---|---|
0x7F |
屏幕 → 设备 | 控制指令、查询指令、系统指令 |
0x7E |
设备 → 屏幕 | 状态上报、应答、系统事件 |
1.2 通用帧格式
| 字节序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 帧头 | 类型 | ID | 数据 1 | 数据 2 | 数据 3 | 数据 4 | 校验 |
各类型帧中数据字节的具体含义见第 3、4 章。
1.3 校验算法
校验位于最后一字节(第 8 字节),对前 7 字节按以下 C 算法计算:
u8 CheckSumR(u8 *p, u8 len1)
{
u16 sum16 = 0;
u8 i = 0, Sum2 = 0;
for (; i < len1 - 1; i++)
sum16 += p[i];
Sum2 = ((((sum16 * 8) / 7 + sum16 % 3 + sum16 % 2) + 1) & 0xff);
Sum2 = (Sum2 / 2 + 2) & 0xff;
return Sum2;
}
调用时
len1 = 8,校验字节本身不参与累加。 本文档所有示例帧的校验值均已按此算法算出,可直接用于验证程序正确性。
校验错误的帧、长度不为 8 字节的帧,屏幕一律丢弃;设备侧也应做同样校验。
2. 配置文件协议
屏幕的设备映射关系由一份文本配置文件描述,由后台/AIS 平台下发给屏幕(也可通过 SD 卡的 smart_bus.txt 更新)。设备厂家需按本章格式提供配置内容。
文件格式要求:
- 使用
::作为分隔符,每行一条,回车换行 - 编码 UTF-8,不要带 BOM 头(带 BOM 会导致首行识别失败)
- 空行不识别;软件生成时自动去重
2.1 配置头(485 V1 协议)
文件第一行为波特率及插件参数,格式:
#波特率::插件标志::指令间隔时间(ms,可选)
示例:
#9600::1::100
| 字段 | 说明 |
|---|---|
| 波特率 | 485 串口波特率,如 9600 |
| 插件标志 | 1 = 模组绑定模式:屏幕启动后等待设备上报绑定状态(见 4.7),设备须在 RESET 后 3 秒内上报,否则屏幕判定设备未绑定, 绑定模式时,屏开机会发送指令查询设备状态。不填或为 0 表示非绑定模式 |
| 指令间隔 | 可选。屏幕连续发送两条控制指令之间的间隔,单位 ms,范围 0~200,缺省 2ms。设备处理较慢时建议配置 30~100 |
2.2 设备条目
名称::类型::ID::回路::状态::是否显示
| 字段 | 说明 |
|---|---|
| 名称 | 设备/场景名称,语音直接说这个名字控制;窗帘类设备通过名称后缀 开/关/停 聚合成同一个设备(如 窗帘开/窗帘关/窗帘停 合并为设备"窗帘") |
| 类型 | 设备类型代码,见表 2-1 |
| ID | 设备地址,如 0x19 |
| 回路 | 回路/按键编号,如 0x01 |
| 状态 | 触发电平:0x01 高电平触发,0x00 低电平触发(按设备实际逻辑配置) |
| 是否显示 | 0x00 显示在屏幕界面;其他值只在后台记录,不显示 |
唤醒词条目(类型填 0x00,可配置多条):
你好,小飞::0x00::你好,主人
即
唤醒词::0x00::唤醒应答语。
2.3 设备类型总表
| 类型 | 名称 | 方向/格式 | 备注 |
|---|---|---|---|
0x29 |
场景 | 同 0x30 开关格式 | 回落/睡眠/起床等情景 |
0x2B |
调光开关 | 3.2 / 4.2 | 每个 ID 最多 4 路调光 |
0x2D |
语音温控(空调/地暖温控器) | 3.3 / 4.3 | 只识别 ID |
0x2E |
地暖 | 同 0x2D 格式 | |
0x30 |
语音灯光开关 | 3.1 / 4.1 | 每个 ID 最多 24 回路;场景/窗帘实际也发 0x30 |
0x31 |
语音窗帘(继电器型) | 同 0x30 格式 | 开/关/停 三个回路控制 |
0x3C |
红外电视 | 3.4 | 由屏幕红外/码库控制,非 485 设备 |
0x50 |
梦幻帘(V2 新增) | 3.5 / 4.4 | 进度 + 叶片角度控制 |
0x51 |
开机音乐(V2 新增) | 4.5 | 配置条目,非控制设备 |
0x52 |
RS485 电视(V2 新增) | 3.6 | 485 直控电视,带频道表 |
0x53 |
进度窗帘(V2 新增) | 3.7 / 4.6 | 进度(0-100)控制 |
2.4 开机音乐配置(V2 新增)
boot_music::0x51::音乐文件MD5::音乐文件URL
示例:
boot_music::0x51::e828daa5939ca69d61fff20dd1556b99::http://qny.aispeaker.com/android/tmp/wang-qing-shui-short.mp3
- URL 指向一个 mp3 文件;MD5 为该文件摘要,用于下载校验缓存
- 配置后,设备开机完成、串口就绪时发送 0x51 事件帧(见 4.5),屏幕收到后播放该音乐
2.5 电视频道表配置(V2 新增,配合 0x52 电视使用)
channel:{"1":"中央一台", "23":"中央新闻", "6":"电影频道"}
- JSON 格式,必须写在一行,不要换行:键为频道号(十进制字符串),值为频道名
- 用于语音说频道名(如"我要看中央一台")时映射为频道号,再通过 0x52 的设置频道指令(3.6)下发
2.6 SIP 配置(V2 新增,酒店对讲)
SIPSERVER::用户名::密码::SIP服务器::端口号::协议(TCP/UDP/TLS)::代理服务器(可选)
SIPHOTEL::前台号
示例:
SIPSERVER::8001::123456::sip.hotel.com::5060::UDP::proxy.hotel.com
SIPHOTEL::9001
SIPSERVER:屏幕的 SIP 注册账号信息,配置齐全后屏幕开机自动注册SIPHOTEL:前台 SIP 账号,用于"呼叫前台"等酒店场景- 代理服务器字段无代理时可省略
- 此项为屏幕侧网络配置,不占用 485 通道
2.7 完整配置示例(配置文件名称及格式为 sbus.ais)
#9600::1::100
boot_music::0x51::e828daa5939ca69d61fff20dd1556b99::http://qny.aispeaker.com/android/tmp/wang-qing-shui-short.mp3
SIPSERVER::8001::123456::sip.hotel.com::5060::UDP
SIPHOTEL::9001
你好,小飞::0x00::你好,主人
回家::0x29::0x19::0x03::0x01::0x00
离家::0x29::0x19::0x04::0x01::0x00
大灯::0x30::0x19::0x08::0x01::0x00
阅读灯::0x2B::0x0A::0x01::0x01::0x00
镜前灯::0x30::0x19::0x09::0x01::0x00
窗帘开::0x31::0x19::0x0D::0x01::0x00
窗帘关::0x31::0x19::0x0D::0x00::0x00
窗帘停::0x31::0x19::0x0E::0x01::0x00
主卧空调::0x2D::0x1A::0x01::0x01::0x00
电视::0x52::0x19::0x01::0x01::0x00
channel:{"1":"中央一台", "23":"中央新闻", "6":"电影频道"}
梦幻帘::0x50::0x19::0x01::0x01::0x00
进度窗帘::0x53::0x19::0x02::0x01::0x00
3. 屏幕 → 设备 控制指令(帧头 0x7F)
3.1 语音灯光开关 / 场景 / 继电器窗帘(类型 0x30、0x29、0x31)
场景(0x29)和继电器窗帘(0x31)实际发送时类型代码仍为 0x30,由配置文件中的回路区分。
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7F | 0x30 | ID | 按键编号 | 属性 1 | 属性 2 | 属性 3 | 校验 |
- 按键编号:1~24,对应配置中的回路
- 属性 1:
0x01高电平 /0x00低电平(按配置的状态字段发出) - 属性 2:
0xFF普通开关按下0x01语音打开(窗帘等特殊场景也发0x01,因为"窗帘关"同样是打开继电器)0x00语音关闭
- 属性 3:
0x30表示 AI 开关
3.2 调光开关(类型 0x2B)
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7F | 0x2B | ID | 按钮编号 1-4 | 亮度值 | 属性 2 | 0x00 | 校验 |
- 亮度值:
0x00~0x64(0~100 百分比);打开发0x64,关闭发0x00 - 属性 2:
0x00常规;0x80表示只控制当前处于打开状态的灯 - 设备返回状态按 4.2 上报匹配的亮度值即可
3.3 语音温控 / 地暖(类型 0x2D、0x2E)
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7F | 0x2D | ID | 0x80 | 按键号 | 属性 2 | 0xCA | 校验 |
- 字节 3 固定
0x80(Bt7=1 表示 AI 面板);字节 6 固定0xCA,便于设备单独校验 - 按键号(字节 4):
| 按键号 | 含义 |
|---|---|
| 1 | 开关机 |
| 2 | 增加温度 |
| 3 | 减少温度 |
| 4 | 风速 |
| 5 | 模式 |
| 7 | 直接设置温度,属性 2 = 温度值(16~31,如 0x12=18℃、0x15=21℃) |
| 8 | 风速 +1 |
| 9 | 风速 -1 |
| 12 | 定时设置(暂未使用) |
- 属性 2(字节 5):
| 按键号 | 属性 2 含义 |
|---|---|
| 1 | 1 开,0 关,202(0xCA) 轮流切换 |
| 2 | 增加 2℃ |
| 3 | 减少 1℃ |
| 4 | 1 低速 2 中速 3 高速 4 自动 |
| 5 | 0 除湿 1 制冷 2 制热 3 送风 |
3.4 红外电视(类型 0x3C,非 485 设备)
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7F | 0x3C | ID | 0xFF | 键值 | 码库 | 0x00 | 校验 |
字节 3 固定 0xFF(不区分红外类型,由屏幕端判断电视类型)。主要键值:
| 键值 | 含义 | 键值 | 含义 |
|---|---|---|---|
| 0x6B | 开关机 | 0x74 | 静音 |
| 0x2B | 音量 + | 0x68 | Home |
| 0x2D | 音量 - | 0x62 | 返回 |
| 0x3E | 频道 + | 0x6F | OK |
| 0x3C | 频道 - | 0x6D | Menu |
| 0x63 | 设置频道(手动添加) | 0x70 | Pause/Play |
| 0x76 | AV/TV/信号源 | 0x75 | 上 |
| 0x30~0x39 | 数字 0~9 | 0x64 | 下 |
| 0x6E | 数字 0~255(属性 2 带数字) | 0x6C | 左 |
| 0x01 | 开机(多数电视无,预留) | 0x72 | 右 |
| 0x00 | 关机(多数电视无,预留) | 0x73 | 设置 |
码库(字节 5):默认 0x00 = 标准码库;>=0x00 表示设备码库编号,如 0x0C 表示 TCL 电视,此时键值直接给 TCL 的按键码。
若需要 485 直控电视,请使用 V2 新增的 0x52 类型(见 3.6)。
3.5 梦幻帘(类型 0x50)【V2 新增】
配置示例:
梦幻帘::0x50::0x19::0x01::0x01::0x00
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7F | 0x50 | ID | 进度值 | 角度值 | 暂停标志 | 0x00 | 校验 |
- 进度值:0~100,
100全开,0全关(语音"打开梦幻帘"发 100,"关闭梦幻帘"发 0,"梦幻帘开到 50%" 发 50) - 角度值:梦幻帘叶片角度值,屏幕原样下发(设备按自身角度量程解析)
- 暂停标志:
1暂停窗帘,0不关注(仅语音"暂停窗帘"时置 1,其余为 0)
示例 —— 设置进度 48(0x30)、角度 32(0x20):
7F 50 19 30 20 00 00 34
示例 —— 暂停:
7F 50 19 30 20 01 00 36
设备应按 4.4 上报实际进度与角度。
3.6 RS485 电视(类型 0x52)【V2 新增】
配置示例(频道表见 2.5):
电视::0x52::0x19::0x01::0x01::0x00
channel:{"1":"中央一台", "23":"中央新闻", "6":"电影频道"}
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7F | 0x52 | ID | 命令 | 参数高位 | 参数低位 | 0x00 | 校验 |
命令(字节 3)定义:
| 命令 | 含义 | 参数(字节 4~5,16 位大端) |
|---|---|---|
| 0x00 | 关机 | 无(0) |
| 0x01 | 开机 | 无(0) |
| 0x02 | 设置频道 | 频道号 0~65535 |
| 0x03 | 频道 + | 无(0) |
| 0x04 | 频道 - | 无(0) |
| 0x05 | 设置音量 | 音量值 0~100 |
| 0x06 | 音量 + | 无(0) |
| 0x07 | 音量 - | 无(0) |
示例帧(直接可验证):
| 操作 | 帧 |
|---|---|
| 关机 | 7F 52 19 00 00 00 00 08 |
| 开机 | 7F 52 19 01 00 00 00 09 |
| 跳到 23 频道 | 7F 52 19 02 00 17 00 17 |
| 频道 + | 7F 52 19 03 00 00 00 0A |
| 频道 - | 7F 52 19 04 00 00 00 0B |
| 音量设为 20 | 7F 52 19 05 00 14 00 17 |
| 音量 + | 7F 52 19 06 00 00 00 0B |
| 音量 - | 7F 52 19 07 00 00 00 0D |
该类型没有状态上报帧:屏幕发出指令后直接更新界面状态,设备无需应答(需状态同步可后续扩展)。
3.7 进度窗帘(类型 0x53)【V2 新增】
配置示例:
进度窗帘::0x53::0x19::0x01::0x01::0x00
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7F | 0x53 | ID | 进度值 | 0x00 | 暂停标志 | 0x00 | 校验 |
- 进度值:0~100,
100全开,0全关 - 暂停标志:
1暂停窗帘,0不关注
示例帧:
| 操作 | 帧 |
|---|---|
| 开到 50% | 7F 53 19 32 00 00 00 25 |
| 全开 | 7F 53 19 64 00 00 00 43 |
| 全关 | 7F 53 19 00 00 00 00 09 |
| 暂停 | 7F 53 19 32 00 01 00 26 |
设备应按 4.6 上报实际进度。
3.8 屏幕就绪通知与状态查询
就绪通知:屏幕开机完成、485 串口就绪后,主动发送一帧就绪通知,设备可忽略:
7F 01 01 01 01 01 01 4F状态查询:配置为绑定模式为1时, 屏幕启动(或刷新设备)后,会对配置中的每个灯光开关(0x30)、调光(0x2B)、温控(0x2D)设备逐个发送查询帧,其特征是按键编号为 0x00、属性 1/属性 2 均为 0x00,属性 3 温控为
0xCA、其余为0x30:| 查询对象 | 查询帧格式(ID=0x19 示例) | | ---- | ---- | | 灯光开关 |
7F 30 19 00 00 00 30 11| | 调光开关 |7F 2B 19 00 00 00 30 0D| | 温控 |7F 2D 19 80 00 00 CA 31|设备收到查询帧后,应立即按第 4 章格式上报当前状态(每条查询间隔由配置的指令间隔时间控制,缺省仅 2ms,注意设备响应能力)。
指令间隔:屏幕每发出一条控制指令后,等待配置的间隔时间(见 2.1)再发下一条。
4. 设备 → 屏幕 状态上报(帧头 0x7E)
4.1 开关输出状态(类型 0x02)
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7E | 0x02 | ID | 回路编码 | 状态 1(回路 1-8) | 状态 2(回路 9-16) | 状态 3(回路 17-24) | 校验 |
- 每个 AI 开关 ID 最多 24 个回路,超过时使用多个 ID
- 回路编码:填
0x81(Bit0=1 表示第一组,Bit7=1 表示按键背光打开) 状态 1~3:按位对应回路状态,bit0 对应第 1 回路、bit1 对应第 2 回路……置 1 为打开。例如回路 8 打开:
7E 02 19 81 80 00 00 6D
4.2 调光输出状态(类型 0x03)
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7E | 0x03 | ID | 调光 1 亮度 | 调光 2 亮度 | 调光 3 亮度 | 调光 4 亮度 | 校验 |
- 每个 AI 调光开关 ID 最多 4 路,亮度 0~100
- 示例 —— ID 0x0A 第 1 路调光到 100%:
7E 03 0A 64 00 00 00 0C;调到 0%:7E 03 0A 00 00 00 00 52
4.3 空调 / 地暖状态(类型 0x04)
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7E | 0x04 | ID | 温度修正值 | 状态 1 | 设置温度 | 室内温度 | 校验 |
- 温度修正值:正数 0~7,负数 8~15
- 设置温度:0~31(℃)
- 室内温度:有符号数,0~60 表示 0~60℃,负温度用补码表示(如
0xFE表示 -2℃) - 状态 1 按位定义:
| 位 | 7 | 6 | 4~5 | 3 | 1~2 | 0 |
|---|---|---|---|---|---|---|
| 含义 | 阀门 | 温度传感器 | 风速 | 方式 | 模式 | 开关机 |
| 说明 | (预留) | 0 不存在,1 存在 | 00 自动,01 低速,10 中速,11 高速 | 0 手动,1 自动 | 00 故障,01 制冷,10 制热,11 送风 | 0 关,1 开 |
- 示例 —— 空调开机、送风、低速、设定 24℃、室温 25℃:
7E 04 1A 18 17 18 19 12 - 示例 —— 地暖开机、设定 24℃、室温 -2℃:
7E 04 1B 18 17 18 FE 16
4.4 梦幻帘状态上报(类型 0x50)【V2 新增】
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7E | 0x50 | ID | 进度值 | 角度值 | 0x00 | 0x00 | 校验 |
- 设备在动作执行过程中/结束后上报实际进度(0~100)与叶片角度
- 示例 —— 进度 48、角度 32:
7E 50 19 30 20 00 00 35
4.5 开机音乐触发(类型 0x51)【V2 新增】
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7E | 0x51 | 0x00 | 0x00 | 播放标志 | 0x00 | 0x00 | 校验 |
- 设备开机完成、串口就绪后,发送此帧通知屏幕;屏幕收到后按 2.4 配置播放开机音乐,并应用酒店模式音量
- 播放标志:
1播放,0不播放 标准帧固定为:
7E 51 00 00 01 00 00 79
4.6 进度窗帘状态上报(类型 0x53)【V2 新增】
| 字节 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 说明 | 0x7E | 0x53 | ID | 进度值 | 0x00 | 0x00 | 0x00 | 校验 |
- 示例 —— 进度 48:
7E 53 19 30 00 00 00 23
4.7 绑定 / 刷新(类型 0xFF)
启用插件标志(2.1 中标志=1)后,设备须在 RESET 后 3 秒内上报绑定状态,否则屏幕判定设备未绑定:
| 状态说明 | 帧 |
|---|---|
| 设备已绑定 | 7E FF 01 01 01 00 00 5D |
| 设备已解绑 | 7E FF 01 01 00 00 00 5E |
| 主动刷新设备(屏幕重新拉取配置) | 7E FF 01 02 00 00 00 5D |
屏幕侧对应指令:
| 操作说明 | 帧 |
|---|---|
| 解绑设备并重置(屏幕 → 设备) | 7F FF FF 01 00 00 00 70 |
5. 本地继电器控制(可选,模组方案)
屏幕本体带两路本地继电器(RS485 插件占用 485 口时,可由设备侧反向控制屏幕继电器):
设备 → 屏幕,控制继电器:
| 操作说明 | 帧 |
|---|---|
| 打开继电器开关一 | 7E 02 FF F8 01 00 00 6C |
| 关闭继电器开关一 | 7E 02 FF F8 00 00 00 6C |
| 打开继电器开关二 | 7E 02 FF F9 01 00 00 6C |
| 关闭继电器开关二 | 7E 02 FF F9 00 00 00 6C |
屏幕 → 设备,回报继电器状态:
| 状态说明 | 帧 |
|---|---|
| 继电器开关一已打开 | 7F 30 FF F8 00 01 30 22 |
| 继电器开关一已关闭 | 7F 30 FF F8 00 00 30 21 |
| 继电器开关二已打开 | 7F 30 FF F9 00 01 30 23 |
| 继电器开关二已关闭 | 7F 30 FF F9 00 00 30 22 |
6. 附录
6.1 对接检查清单
- 波特率、插件标志、指令间隔与配置头一致
- 所有帧严格 8 字节,校验按 1.3 算法,双方丢弃校验失败/长度错误的帧
- 绑定模式(标志=1)下,设备 RESET 后 3 秒内上报绑定状态帧
- 屏幕上电会逐个发送查询帧(按键编号=0x00),设备须正确应答当前状态
- 新增设备注意:
- 梦幻帘(0x50):按 3.5 接收控制,按 4.4 上报进度+角度
- 进度窗帘(0x53):按 3.7 接收控制,按 4.6 上报进度
- RS485 电视(0x52):按 3.6 接收 8 种命令,无需上报, 旧电视不支持语音控制频道等功能, 对接电视优先选择此类型
- 开机音乐(0x51):设备就绪后按 4.5 发送触发帧
- 频道表
channel:必须一行 JSON;配置文件 UTF-8 无 BOM、::分隔、每行一条
6.2 调试与产测
- 屏幕端产测入口:开机后在主界面顶部下拉,进入 设置 → 高级设置 → 右上角点击 5 次以上进入产测界面;
模组&485测试项显示 OK 表示串口通信正常(只要串口收到过绑定/解绑帧即会显示 OK) - 配置更新:SD 卡
smart_bus.txt与屏幕/data/jdsmart_open/smart_bus.txt大小不一致时自动覆盖更新 - 设备侧可通过发送
7E FF 01 02 00 00 00 5D触发屏幕重新拉取设备配置
6.3 语音指令与设备名称
- 语音直接使用配置中的名称控制设备,名称请按客人习惯命名(如"大灯""镜前灯""窗帘开")
- 窗帘类(0x31)通过名称后缀聚合:同一设备名的
开/关/停三行合并为一个窗帘设备