红外转发器接口文档
红外转发器接口文档
Version | Date | Author | Log |
---|---|---|---|
V1.7 | 2018.10.30 | Jason | 重写文档。。。。。。。统一全部红外接口,废弃原红外协议,太多东西,请比对更新 |
V1.8 | 2018.10.31 | Jason | 增加服务器场景控制的定义定义红外转发器对象及查询修改接口 |
V1.9 | 2018.11.1 | Jason | 增加空调一键匹配functionTimeout置0为提前cancel |
V2.0 | 2018.11.5 | Jason | DeviceInfoList补充缺失的品牌ID字段brandId顺带把及其碍眼又迷糊的t字段改为deviceType一键匹配遥控方案 绑定码库方案,新建自定义遥控器 补充缺失请求serialId字段 MQTT返回结果补充serialId 服务器场景action定义 增加name用于直接显示遥控方案名 |
V2.1 | 2018.12.18 | Jason | 增加下发码库function定义,空调key&byte定义及拼接定义,服务器增删下载本地方案API |
V2.2 | 2018.12.27 | Jason | 更改key&byte: v1的风速恒ff 示例细分服务器解析byte与实控byte 统一按v3控制 |
[TOC]
区别在于学习按键、删除按键(仅有以套为单位删除方式)、确认选取码库、删除码库的时候,服务器根据设备类型决定是否和设备交互(单品不需交互,二合一需要交互)
进入到码库分支时沿用rf时期红外转发器的接口,区别在于:
1. 进入自动对码模式由原先的蓝牙传输指令修改为调用新增服务器设置进入对码模式接口,自动对码模式匹配到的测试码由mqtt返回,格式保持与原先的rf匹配返回测试码一致
2. 手动选择品牌匹配的测试码依然在http中返回. 格式保持与原先的rf匹配返回测试码一致
3. 增加发送测试码接口,用于点击测试码时发送数据给红外转发器
设备对象
红外转发器设备作为WiFi单品形式存在,交互数据为json数据体,与插座单品类似,相关接口仍延续。
红外设备标准化定义
Key | Value Type | Description | Mark |
---|---|---|---|
deviceId | string | 设备唯一id | 红外设备唯一的序列号 |
name | string | 设备名称 | 入网默认为 IR transponder |
type | string | 设备类型Hex | 红外设备为"51";即对应81类型 |
online | bool | 是否在线 | |
action | jsonArray | 设备具备的能力 | 参考以下定义,由前端激活入网时定义 |
state | jsonArray | 设备当前状态,与action对应 |
红外设备功能action定义
由前端激活入网时定义
Key | Value Type | Description | Mark |
---|---|---|---|
functionId | int | 功能点ID | 由1起 |
function | string | 功能标准化字符串 | 参考以下定义值 |
functionTag | string | 功能标识 | 参考以下定义值 |
functionName | string | 功能名称 | 参考以下定义值 |
dataType | string | 数据类型 | 参考以下定义值 |
dataTranType | array | 数据传输类型,包含string | upload 或 download |
红外设备状态state定义
控制转发 或 学习上报
Key | Value Type | Description | Mark |
---|---|---|---|
functionId | int | 功能点ID | 与action对应 |
data | 依据action的dataType定义 | 数据 | 当前均为 hexString |
定义1: 控制红外转发
Function1
Action Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 1 | 控制转发 |
function | string | send | |
functionTag | string | control | |
functionName | string | send | |
dataType | string | raw | 红外发射码为hexString |
dataTranType | array | ["download"] | 只下发 |
发送示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 1 | 控制转发 |
data | hexString | "11ffeemmdd" | 红外发射码 |
定义2: 学习红外上传
Function2
Action Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 2 | 学习上传 |
function | string | receive | |
functionTag | string | control | |
functionName | string | receive learning | |
dataType | string | raw | 接收到的红外编码为hexString |
dataTranType | array | ["upload"] | 只上传 |
zipType | string | bool | 接受红外编码是否为压缩 |
接收上传示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 2 | 学习上传 |
data | hexString | "11ffeemmdd" | 接收的红外码 |
定义3: 一键匹配红外上传
Function3
Action Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 3 | 匹配上传 |
function | string | receive | |
functionTag | string | control | |
functionName | string | receive pairing | |
dataType | string | raw | 接收到的红外编码为hexString |
dataTranType | array | ["upload"] | 只上传 |
接收上传示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 3 | 匹配上传 |
data | hexString | "11ffeemmdd" | 接收的红外码 |
定义4: 进入学习接收模式
Function4
Action Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 4 | 设置学习模式 |
function | string | learning | |
functionTag | string | config | |
functionName | string | learning | |
dataType | string | int | 学习模式超时时间 /秒 默认90秒 |
dataTranType | array | ["upload","download"] | 下发,回复 |
设置示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 4 | 设置学习模式 |
data | int | 30 | 30秒超时 |
回复设置ack示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 4 | 设置学习模式 |
data | int | 下发的超时时长,0为失效 |
定义5: 进入一键匹配接收模式
Function5
Action Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 5 | 设置匹配模式 |
function | string | pairing | |
functionTag | string | config | |
functionName | string | pairing | |
dataType | string | int | 匹配模式超时时间 /秒 默认90秒 |
dataTranType | array | ["upload","download"] | 下发,回复 |
设置示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 5 | 设置匹配模式 |
data | int | 30 | 30秒超时 |
回复设置ack示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 5 | 设置匹配模式 |
data | int | 下发的超时时长,0为失效 |
定义6: 设置本地码库增删
Function6
Action Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 6 | 设置本地码库增删 |
function | string | depositary | |
functionTag | string | config | |
functionName | string | depositary | |
dataType | string | int | 1.新增方案, 2.删除方案 |
dataTranType | array | ["upload","download"] | 下发,回复 |
indexType | string | int | 方案索引,非0有效 |
设置新增示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 6 | 设置本地码库新增 |
data | int | 1 | 新增方案 |
count | int | 100 | 可携带方案信息条数 一是用于确定方案大小,二是确定传输完成 |
回复新增ack示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 6 | 设置匹配模式 |
data | int | 1 | 新增方案,失败回复0 |
index | int | 1 | 本地存储索引,非0! |
index 为转发器存储的地址,非零,控制存储数量由设备本身flash决定
设置删除示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 6 | 设置本地码库删除 |
data | int | 2 | 删除方案 |
index | int | 1 | 存储索引 |
回复删除ack示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 6 | 设置匹配模式 |
data | int | 2 | 删除方案,失败回复0 |
index | int | 1 | 存储索引 |
定义7: 下发本地码库数据
Function7
Action Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 7 | 下发本地码库数据 |
function | string | codeDownload | |
functionTag | string | codeInfo | |
functionName | string | codeDownload | |
dataType | string | raw | src码 |
dataTranType | array | ["download"] | 下发 |
keyType | string | raw | 对应索引 |
indexType | string | int | 方案索引 |
countType | string | int | 方案信息索引 |
下发单条码库示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 7 | 下发本地码库 |
data | raw | aabbccddee | src码数据 |
index | int | 1 | 存储索引1 |
count | int | 3 | 方案下发第3条信息 |
key | raw | on / 01ffffffff | 按键描述索引 或 7Byte索引 |
回复下发ack示例
State Key | Value Type | Value | 说明 |
---|---|---|---|
functionId | int | 7 | 下发本地码库 |
data | raw | 1 | 下发成功,0为失败,服务器此时需重传 |
index | int | 1 | 存储索引1 |
count | int | 3 | 方案下发第3条信息 |
设备接口
红外设备信息上传
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | upload_config | |
deviceName | string | 产品名字 | 从regist_aliDev来 |
productKey | string | 产品key | 从regist_aliDev来 |
config | string | 标准化设备定义 |
查询红外设备
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | query_ali_dev | |
Response Key | |||
configs | jsonArray | 标准化设备定义数组 | 里面包含一切wifi单品设备,区分设备类型 |
删除设备(服务器需清空相应的码库表)
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | delete_ali_dev | |
deviceId | String | 产品序列号 |
设置设备状态 (红外前端不会调用此接口)
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | set_ali_dev | |
deviceId | String | 产品序列号 | |
value | jsonArray | state对象数组 | |
Response Key | |||
value | jsonArray | 当前state对象数组 |
读取设备状态 (红外前端不会调用此接口)
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | read_ali_dev | |
deviceId | String | 产品序列号 | |
functionId | jsonArray | 包含功能ID数组 | |
Response Key | |||
value | jsonArray | 对应state对象数组 |
业务对象
DeviceTypeList 遥控设备类型单元
Key | Value Type | Description | Mark |
---|---|---|---|
t | int Enum | 被遥控设备类型ID | 1 机顶盒 2电视 3DVD 5投影仪 6风扇 7空调 8智能灯 10互联网机顶盒 12扫地机 13音响 15空气净化器 0其他(自定义学习) |
name | string | 被遥控设备类型名字 |
DeviceBrandList 遥控设备品牌单元
Key | Value Type | Descriotion | Mark |
---|---|---|---|
bid | int | 品牌ID | 按遥控云的标准 |
common | int @optional |
常用品牌标识 | |
name | string | 品牌名字 | 按遥控云的标准 |
DeviceInfoList 遥控设备方案单元
遥控器对象,增加key和extends,区别以前协议
Key | Value Type | Description | Mark |
---|---|---|---|
index | int | 遥控器索引ID | 非0,新增时调用其他接口 |
name | string | 遥控器名 | |
deviceType | int | 遥控设备类型ID | 与码库方案保持一致 |
brandId | int | 遥控品牌类型ID | 与码库方案保持一致 |
keys | jsonArray CommonKeyList |
标准按键业务对象列表 | 1. 类型非0(非其他),设备有既定规范页面,根据key判断按键是否可控 2. 类型0的自定义学习,只有空列表 |
extendsKeys | jsonArray ExtendKeyList |
拓展按键业务对象列表 | 定义类型0(其他), 以及非0的更多拓展按键(注意其生成规则) |
rid | string @optional |
遥控云码库方案ID | 仅匹配有效,用于匹配遥控云码库 |
rc_command | jsonArray @optional |
码库rc_command数据单元数组 云需对此解析成相应的CommonKeyList |
仅匹配的方案有效 |
rmodel | string @optional |
遥控器型号 | 仅匹配的方案有效 |
version | string @optional |
遥控器版本 | 仅匹配的方案有效 |
localaddr | int @optional |
遥控器本地存储索引,非0有效 | 仅本地存储方案有效 |
CommonKeyList标准按键业务对象
页面标准按键与云端建立对应关系的依据,预留给更多键值扩展
Key | Value Type | Description | Mark |
---|---|---|---|
key | string | 按键的唯一描述用于控制及更改发射码参照遥控云 根据不同设备有不同规则 |
在开发过程中总结出json模板供统一使用 |
ExtendKeyList拓展按键业务对象
拓展按键与云端建立对应关系的依据,预留给更多键值扩展
Key | Value Type | Description | Mark |
---|---|---|---|
key | string | 拓展按键的名称用于控制、删除、重命名前端数据截取"| "前用户输入的功能名用于显示 |
1. 根据唯一的extendsKey进行列表显示 2. 键名生成规则为:用户输入的功能键名 + " | ” + 时间戳From UTC 2001/1/1 00:00:00(秒),生成规则由前端控制,以保证数据唯一 |
rc_command数据单元(云与遥控云间处理key的映射关系)
码库命令数据,参考原协议,仅用于匹配的遥控器
Key | Value Type | Description | Mark |
---|---|---|---|
kn | String | 国际化键显示名 | |
src | String | 原始码 |
业务接口
基本请求参数 Post: hostname/consumer/common?
注意:无@optional标志皆为必须项,且请求成功的回复均不可有null!
access_token | String | 访问口令token |
---|---|---|
基本回复参数 | ||
success | int | http_code请求成功与否 |
获取遥控云遥控类型
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | String | query_ir_device_type | |
Response Key | |||
rs | jsonArray | DeviceTypeList对象数组 | 遥控类型 |
获取遥控云品牌类型
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | String | query_ir_brand | |
deviceType | int | DeviceTypeList中类型ID | |
Response Key | |||
rs | jsonArray | DeviceBrandList对象数组 | 对应遥控类型的品牌 |
获取红外遥控方案
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | query_ir_device | |
serialId | string | 红外转发器序列号 | |
Response Key | |||
rs | jsonArray | DeviceInfoList对象数组 | 转发器下对应的遥控方案 |
控制转发命令
根据方案索引及按键Key查询转发的控制命令,发给转发器
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | control_ir_device | |
serialId | string | 红外转发器序列号 | |
index | int | DeviceInfoList中遥控索引ID | 匹配方案 |
keyType | int | 0:标准按键 1:拓展按键 2:手动匹配测试按键 |
按键类型 对于2仅用于发送手动匹配的测试码库按键 |
key | string | 标准按键或拓展按键的按键名称key | 唯一匹配按键准则,如方案中不存在,返回失败 |
删除红外遥控方案
删除遥控方案,同时解绑匹配的遥控云码库
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | delete_ir_device | |
serialId | string | 红外转发器序列号 | |
index | int | DeviceInfoList中遥控索引ID | 匹配方案 |
如此方案已下载至转发器内,需删除
重命名红外遥控方案
重命名遥控方案
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | rename_ir_device | |
serialId | string | 红外转发器序列号 | |
index | int | DeviceInfoList中遥控索引ID | 匹配方案 |
name | string | 命名遥控器方案 |
删除方案中特定按键
根据方案索引及Key删除特定按键
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | delete_ir_device_key | |
serialId | string | 红外转发器序列号 | |
index | int | DeviceInfoList中遥控索引ID | 匹配方案 |
keyType | int | 0:标准按键 1:拓展按键 |
按键类型 一般不建议删除通过匹配码库生成的方案中的标准按键 |
key | string | 标准按键或拓展按键的按键名称key | 唯一匹配按键准则,如方案中不存在,返回成功 |
手动匹配遥控方案——测试码获取
根据品牌id,设备类型主动数据匹配
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | query_ir_testcode | |
deviceType | int | DeviceTypeList中类型ID | 匹配类型 |
brandId | int | DeviceBrandList中品牌ID | 匹配品牌 |
serialId | string | 红外转发器序列号 | |
Response Key | |||
rs | jsonArray | DeviceInfoList对象数组(仅用于匹配的对象) | 遥控云匹配测试的方案,rid, rmodel, version为必须 |
一键匹配遥控方案——进入空调对码模式
设置某红外转发器进入空调一键对码模式,仅用于设备类型为空调(7)
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | pair_ir_remotecode | |
serialId | string | 红外转发器序列号 | |
brandId | int | DeviceBrandList中品牌ID | 匹配空调品牌 |
timeout | int | 超时时间/秒置0为提前取消 | 红外转发器只在此时间内处于接收原始码状态 |
首先按标准http返回是否成功进入一键对码模式
等待转发器上报接收到的遥控器码并将匹配到的测试方案通过MQTT返回
之后使用控制转发命令发送测试码库
完成测试后,使用绑定码库方案完成方案的新建
手动匹配/一键匹配遥控方案——绑定码库方案
完成手动匹配测试码库,绑定生成新的遥控方案对象
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | bind_ir_remotecode | |
serialId | string | 红外转发器序列号 | |
deviceType | int | DeviceTypeList中类型ID | 匹配类型 |
brandId | int | DeviceBrandList中品牌ID | 匹配品牌 |
remoteId | string | 匹配的测试码库rid | 遥控云码库id |
name | string@optional | 命名匹配成功的遥控器方案 | 可选,默认为类型加品牌名 |
Response Key | |||
remote | jsonDic | DeviceInfoList对象 | 新建的匹配成功遥控方案 |
学习遥控方案——新建自定义遥控器
创建自定义的遥控器,用于学习复制遥控器
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | create_ir_device | |
serialId | string | 红外转发器序列号 | |
deviceType | int | DeviceTypeList中类型ID | 学习的设备类型 |
brandId | int@optional | DeviceBrandList中品牌ID | 学习的品牌,如无置0 |
name | string | 命名自定义遥控器方案 | 用户自定义输入,默认为自定义遥控器+类型名 |
Response Key | |||
remote | jsonDic | DeviceInfoList对象 | 新建的自定义遥控方案 |
学习遥控方案——进入按键学习模式
设置某红外转发器进入按键学习模式
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | learn_ir_device_key | |
serialId | string | 红外转发器序列号 | |
index | int | DeviceInfoList中遥控索引ID | 匹配方案 |
keyType | int | 0:标准按键1:拓展按键 | 按键类型 |
key | string | 标准按键或拓展按键的按键名称key | 唯一匹配按键准则,如方案中存在即为替换,否则为新增学习,拓展按键遵循key命名规则 |
timeout | int | 超时时间/秒 置0为提前取消 |
红外转发器只在此时间内处于接收原始码状态 |
首先按标准http返回是否成功进入按键学习模式
等待转发器上报接收到的遥控器码并将更新后的方案通过MQTT返回
本地遥控方案——下载方案
下载码库方案至红外转发器
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | local_ir_device_download | |
serialId | string | 红外转发器序列号 | |
index | int | DeviceInfoList中遥控索引ID | 匹配方案 |
timeout | int | 超时时间/秒 置0为提前取消 |
红外转发器只在此时间内处于下载方案状态 约定为120s |
首先按标准http返回是否成功进入方案下载模式
等待转发器接收完完整方案并通过MQTT返回下载方案结果
本地遥控方案——删除方案
删除红外转发器中存储的方案
Request Key | Value Type | Value | 说明 |
---|---|---|---|
CMD | string | local_ir_device_delete | |
serialId | string | 红外转发器序列号 | |
index | int | DeviceInfoList中遥控索引ID | 匹配方案 |
MQTT返回按键学习结果
确认按键学习结果
Response Key | Value Type | Value | 说明 |
---|---|---|---|
type | int | 20 | MQTT数据类型 |
success | bool | 学习结果 | |
serialId | string | 红外转发器序列号 | |
remote | jsonDic | DeviceInfoList对象,失败无此键值 | 学习更新后的完整遥控方案 |
MQTT返回一键匹配测试码库结果
确认按键学习结果
Response Key | Value Type | Value | 说明 |
---|---|---|---|
type | int | 21 | MQTT数据类型 |
success | bool | 一键对码结果 | |
serialId | string | 红外转发器序列号 | |
rs | jsonArray | DeviceInfoList对象数组(仅用于匹配的对象) | 遥控云匹配测试的方案,rid, rmodel, version为必须 |
MQTT返回机内方案下载结果
确认按键学习结果
Response Key | Value Type | Value | 说明 |
---|---|---|---|
type | int | 22 | MQTT数据类型 |
success | bool | 下载结果 | |
serialId | string | 红外转发器序列号 | |
index | int | DeviceInfoList中遥控索引ID | 下载的方案 |
localaddr | int | 存储索引 | 转发器内方案存储索引 |
服务器场景action定义
红外转发器服务器场景中action格式
Key | Value Type | Value | 说明 |
---|---|---|---|
node_type | string | 07 | 识别为红外转发器action |
serialId | string | 红外转发器序列号 | |
action | jsonString | 以下序列化单元经json序列化为字符串 | 服务器反解析为map经控制接口直接触发转发器动作 |
action的jsonString序列化对象单元
Key | Value Type | Value | 说明 |
---|---|---|---|
index | int | DeviceInfoList中遥控索引ID | 匹配方案 |
name | string | DeviceInfoList中遥控器名 | 用于界面直接显示 |
keyType | int | 0:标准按键 1:拓展按键 |
按键类型 |
key | string | 标准按键或拓展按键的按键名称key | 唯一匹配按键准则 |
空调Key&Bytes定义
空调Key枚举定义及7-bytes位定义
Key枚举定义
v1为version==1,v3为version==3
Mode | KeyString | byteHex | 说明 |
---|---|---|---|
关机 | off | 0x00 | 直接定义 |
开机 | on | 0x01 | 直接定义 对应初始化制冷26度 如v1的“ar26”,v3的“r_s0_26_u1_l1_p0” |
自动 | a | 0x11 | 拼接定义,无温度 |
制冷 | r | 0x21 | 拼接定义 |
抽湿 | d | 0x31 | 拼接定义,无温度 |
送风 | w | 0x41 | 拼接定义,v1无温度 |
制热 | h | 0x51 | 拼接定义,部分无制热功能 |
Temp | KeyString | byteHex | 说明 |
---|---|---|---|
16 | 16 | 0x10 | 拼接定义 |
17 | 17 | 0x11 | 拼接定义 |
…… | …… | …… | …… |
29 | 29 | 0x1d | 拼接定义 |
30 | 30 | 0x1e | 拼接定义 |
无效 | _ | 0xff | 拼接定义,置空 |
Speed | KeyString | byteHex | 说明 |
---|---|---|---|
自动 | a | 0x00 | key仅v1定义,拼接定义 v1固定自动 |
自动 | s0 | 0x00 | key仅v3定义,拼接定义 送风无自动 |
1档 | s1 | 0x01 | 仅v3定义,拼接定义 抽湿仅1档 |
2档 | s2 | 0x02 | 仅v3定义,拼接定义 |
3档 | s3 | 0x03 | 仅v3定义,拼接定义 |
无效 | _ | 0xff | 占位预留,v1固定为ff,v3必须定义 |
UpSwing | KeyString | byteHex | 说明 |
---|---|---|---|
开启 | u1 | 0x01 | 仅v3定义,拼接定义 |
关闭 | u0 | 0x00 | 仅v3定义,拼接定义 |
无效 | _ | 0xff | v1无效,v3按需定义 |
LeftSwing | KeyString | byteHex | 说明 |
---|---|---|---|
开启 | l1 | 0x01 | 仅v3定义,拼接定义 |
关闭 | l0 | 0x00 | 仅v3定义,拼接定义 |
无效 | _ | 0xff | v1无效,v3按需定义 |
v3中有部分key包含摆风独立key: `*_*_*_u0_*_*`,暂定为v2,目前按不支持处理,即拼接规则置空摆风位`
Key拼接定义
KeyString:
v1 | |
---|---|
off | 关机 |
on | 开机 |
{Speed} + {Mode} + ({Temp}) | 拼接 |
v3 | |
---|---|
off | 关机 |
on | 开机 |
{Mode} + _ + {Speed} + _ + {Temp} + _ + {UpSwing} + _ + {LeftSwing} + _p0 |
拼接 |
Bytes:
byte0 | byte1 | byte2 | byte3 | byte4 | byte5 | byte6 |
---|---|---|---|---|---|---|
{Mode} | {Speed} | {Temp} | {UpSwing} | {LeftSwing} | 方案索引 | 预留(版本识别) |
byte5(方案索引): 索引本地方案地址,预留给多方案设备,通过读取状态确定,当前线控器仅方案01
byte6(版本识别): v1:0x01, v2:0x02, v3:0x03, v2为v3的不支持摆风版本
示例
服务器需按上述定义将**相应版本**的key解析为byte,前端则**统一按v3**的逻辑组成byte用于控制
定义 | Key | 服务器解析Bytes (区分版本) |
线控按键及App控制Bytes (统一为v3规则) |
---|---|---|---|
关机 | “off” | All: 00ffffffff+{index}+{version} | 00ffffffff+{index}+03 |
开机 | “on” | All: 01ffffffff+{index}+{version} | 01ffffffff+{index}+03 |
自动,风速自动,上下左右摆风 | v1:“aa” v3:”a_s0__u1_l1_p0” v2:”a_s0____p0” |
v1: 11ffffffff+{index}+01 v3: 1100ff0101+{index}+03 v2: 1100ffffff+{index}+02 |
1100ff0101+{index}+03 |
制冷,风速自动, 20度 | v1:“ar20” v3:”r_s0_20_u0_l0_p0” v2:”r_s0_20___p0” |
21ff14ffff+01+01 2100140000+01+03 210014ffff+01+02 |
2100140000+01+03 |
制冷,风速1档, 26度,上下摆 | “ar26” “r_s1_26_u1_l0_p0” “r_s1_26___p0” |
21ff1affff+0101 21011a0100+0103 21011affff+0102 |
21011a0100+0103 |
抽湿,风速1档, 左右摆 | “ad” “d_s1__u0_l1_p0” “d_s1____p0” |
31ffffffff+0101 3101ff0001+0103 3101ffffff+0102 |
3101ff0001+0103 |
送风,风速2档, 26度上下左右摆风 | “aw” “w_s2_26_u1_l1_p0” “w_s2_26___p0” |
41ffffffff+0101 41021a0101+0103 41021affff+0102 |
41021a0101+0103 |
制热,风速3档, 28度,左右摆风 | “ah28” “h_s3_28_u0_l1_p0” “h_s3_28___p0” |
51ff1cffff+0101 51031c0001+0103 51031cffff+0102 |
51031c0001+0103 |
硬件处理控制bytes时,**不应全匹配!**,须从byte0到byte4逐个字节比对服务器下发的索引,如该字节下发的索引值为0xff,则匹配该字节上的任意控制字符,直到确定唯一的索引!
如服务器下发的v1控制命令有:
01ffffffff+01+01 —— ON
21ff14ffff+01+01 —— 制冷,风速自动, 20度
当前端按v3控制发送开机,01ffffffff+01+03 仅匹配byte0确定为ON
当前端按v3控制发送 制冷,风速自动, 20度,上下摆 即2100140100+01+03,
其中对于byte1, byte3, byte4 都为0xff, 则直接忽略该位,即匹配得21ff14ffff,取得相应方案