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 屏幕就绪通知与状态查询

  1. 就绪通知:屏幕开机完成、485 串口就绪后,主动发送一帧就绪通知,设备可忽略:

    7F 01 01 01 01 01 01 4F
    
  2. 状态查询:配置为绑定模式为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,注意设备响应能力)。

  3. 指令间隔:屏幕每发出一条控制指令后,等待配置的间隔时间(见 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 对接检查清单

  1. 波特率、插件标志、指令间隔与配置头一致
  2. 所有帧严格 8 字节,校验按 1.3 算法,双方丢弃校验失败/长度错误的帧
  3. 绑定模式(标志=1)下,设备 RESET 后 3 秒内上报绑定状态帧
  4. 屏幕上电会逐个发送查询帧(按键编号=0x00),设备须正确应答当前状态
  5. 新增设备注意:
    • 梦幻帘(0x50):按 3.5 接收控制,按 4.4 上报进度+角度
    • 进度窗帘(0x53):按 3.7 接收控制,按 4.6 上报进度
    • RS485 电视(0x52):按 3.6 接收 8 种命令,无需上报, 旧电视不支持语音控制频道等功能, 对接电视优先选择此类型
    • 开机音乐(0x51):设备就绪后按 4.5 发送触发帧
  6. 频道表 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)通过名称后缀聚合:同一设备名的 开/关/停 三行合并为一个窗帘设备

results matching ""

    No results matching ""