红外设备管理接口
目前支持红外功能的设备有:空调伴侣升级版、空调伴侣P3、M2网关。
获取红外设备类型列表
- 接口intent:query.ir.categories
- 接口描述:本接口用于查询当前已支持的红外设备类型,如电视、空调等。
- 请求参数:无
- 请求示例
{
"intent": "query.ir.categories",
"data": {}
}
名称 |
类型 |
描述 |
categoryId |
Integer |
红外设备类型id |
enName |
String |
设备类型英文名 |
iconId |
String |
图标id |
name |
String |
设备类型中文名 |
model |
String |
物模型 |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": [
{
"iconId": "device_ir_stb",
"enName": "STB",
"name": "Set-top Box",
"model": "virtual.ir.stb",
"categoryId": 1
},
{
"iconId": "device_ir_tv",
"enName": "TV",
"name": "TV",
"model": "virtual.ir.tv",
"categoryId": 2
},
{
"iconId": "device_ir_box",
"enName": "BOX",
"name": "TV box",
"model": "virtual.ir.box",
"categoryId": 3
}
]
}
通过设备类型获取品牌列表
- 接口intent:query.ir.brands
- 接口描述:本接口可根据红外设备类型查询支持的品牌列表。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
categoryId |
Integer |
是 |
红外设备类型id,“query.ir.categories”接口返回 |
{
"intent": "query.ir.brands",
"data": {
"categoryId": 1
}
}
名称 |
类型 |
描述 |
brandId |
int |
品牌id |
enName |
String |
设备类型英文名 |
pinyin |
String |
拼音 |
name |
String |
设备类型中文名 |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": [
{
"pinyin": "aihua",
"brandId": 307,
"enName": "Aiwa",
"name": "Aiwa"
},
{
"pinyin": "aoguangkeji",
"brandId": 151,
"enName": "Aoguang",
"name": "Aoguang"
},
{
"pinyin": "bubugao",
"brandId": 452,
"enName": "BBK",
"name": "BBK"
}
]
}
查询匹配树信息
- 接口intent:query.ir.match
- 接口描述:本接口可根据红外设备类型和品牌查询红外的匹配树信息,包含按键功能,如开关、风速等。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
type |
Integer |
是 |
1 类别品牌查询 |
categoryId |
Integer |
是 |
红外设备类型id,“query.ir.categories”接口返回 |
brandId |
String |
是 |
品牌id,“query.ir.brands”接口返回 |
{
"intent": "query.ir.match",
"data": {
"type": 1,
"categoryId": 8,
"brandId": 1077
}
}
名称 |
类型 |
描述 |
category |
Object |
此匹配树适用的类别 |
brand |
Object |
此匹配树适用的品牌 |
keys |
Array(Object) |
匹配树中可能用到的按键 |
nodes |
Array(Object) |
匹配树中可能用到的方案 |
version |
String |
版本 |
category 说明:
名称 |
类型 |
描述 |
id |
Integer |
类别id |
name |
String |
类别名称 |
brand 说明:
名称 |
类型 |
描述 |
id |
Integer |
品牌id |
name |
String |
品牌名称 |
enName |
String |
品牌英文名称 |
keys 说明:
名称 |
类型 |
描述 |
id |
Integer |
品牌id |
name |
String |
品牌名称 |
enName |
String |
品牌英文名称 |
mustMatch |
Boolean |
是否必须匹配 |
nodes 说明:
名称 |
类型 |
描述 |
cursor |
Integer |
当前方案游标 |
mismatched |
Integer |
若不匹配,下一个待匹配的 node id,若为 null,则表示匹配失败 |
total |
Integer |
方案总数 |
controller_id |
Integer |
遥控器 id |
count |
Integer |
剩余方案个数 |
matched |
Integer |
若匹配上,下一个待匹配的 node id。若此字段为 null,表示匹配成功,目标遥控器 id 即为 controller_id |
id |
Integer |
方案id |
key |
Object |
方案的按键信息,详情可看 keys 说明 |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"nodes": [
{
"cursor": 1,
"mismatched": 3,
"total": 3,
"controllerId": 4676,
"count": 2,
"matched": 2,
"id": 1,
"key": {
"name": "POWER",
"enName": "POWER",
"id": 1
}
},
{
"cursor": 1,
"mismatched": 3,
"total": 3,
"controllerId": 4676,
"count": 2,
"id": 2,
"key": {
"name": "TIMER",
"enName": "TIMER",
"id": 23
}
}
],
"keys": [
{
"name": "电源",
"enName": "POWER",
"mustMatch": true,
"id": 1
},
{
"name": "风速",
"enName": "FAN_SPEED",
"mustMatch": false,
"id": 9367
},
{
"name": "摆风",
"enName": "SWING",
"mustMatch": false,
"id": 9362
}
],
"category": {
"name": "FAN",
"id": 8
},
"brand": {
"name": "天敏",
"enName": "10moons",
"id": 1077
},
"version": "20200820"
}
}
增加遥控器
- 接口intent:config.ir.create
- 接口描述:本接口用于创建红外遥控器。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
parentDId |
String |
是 |
网关id |
positionId |
String |
否 |
设备位置ID |
categoryId |
Integer |
是 |
红外设备类型id,“query.ir.categories”接口返回 |
brandId |
Integer |
是 |
品牌id,“query.ir.brands”接口返回 |
controllerId |
Integer |
是 |
遥控器ID |
name |
String |
是 |
遥控器名称 |
{
"intent": "config.ir.create",
"data": {
"brandId": 1077,
"categoryId": 8,
"name": "name",
"parentDid": "virtual2.32056709824364",
"controllerId": 4676
}
}
名称 |
类型 |
描述 |
did |
String |
遥控器的设备ID |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"did": "ir.837355405973868544"
}
}
删除遥控器
- 接口intent:config.ir.delete
- 接口描述:本接口用于删除红外遥控器。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
did |
String |
是 |
遥控器的设备ID |
{
"intent": "config.ir.delete",
"data": {
"did": "ir.837355405973868544"
}
}
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": ""
}
更新遥控器
- 接口intent:config.ir.update
- 接口描述:本接口用于修改红外遥控器的名称。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
did |
String |
是 |
要更新的遥控器的设备ID |
name |
String |
是 |
要更新的遥控器的设备名称 |
{
"intent": "config.ir.update",
"data": {
"did": "ir.837371837843460096",
"name": "new name"
}
}
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": ""
}
查询遥控器信息
- 接口intent:query.ir.info
- 接口描述:本接口用于查询红外遥控器的详细信息,包含品牌、类型、创建时间等。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
did |
String |
是 |
遥控器的设备ID |
{
"intent": "query.ir.info",
"data": {
"did": "ir.837371837843460096"
}
}
名称 |
类型 |
描述 |
did |
String |
遥控器的设备ID |
controllerId |
int |
遥控器id |
categoryId |
int |
遥控器类型 |
brandId |
int |
遥控器品牌id |
brandName |
String |
品牌名称 |
type |
int |
空调才有(0和1表示无状态空调,2表示有状态空调) |
createTime |
long |
遥控器创建时间,时间戳 |
updateTime |
long |
遥控器更新时间,时间戳 |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"brandName": "10moons",
"lineupId": "",
"controllerId": 4676,
"createTime": 1619686475286,
"brandId": 1077,
"updateTime": 1619686475286,
"type": 1,
"did": "ir.837371837843460096",
"categoryId": 8
}
}
查询网关下遥控器列表
- 接口intent:query.ir.list
- 接口描述:本接口用于查询指定网关设备下的红外遥控器列表。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
did |
String |
是 |
网关ID |
{
"intent": "query.ir.list",
"data": {
"parentDid": "virtual2.32056709824364"
}
}
名称 |
类型 |
描述 |
did |
String |
设备id |
state |
Integer |
设备状态(1在线,0离线) |
positionId |
String |
位置id |
parentDid |
String |
父设备id |
deviceName |
String |
设备名称 |
model |
String |
设备model |
type |
int |
0和1表示无状态空调,2表示有状态空调 |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": [
{
"parentDid": "virtual2.32056709824364",
"positionId": "real1.829743976676106240",
"model": "virtual.ir.fan",
"state": 1,
"type": 1,
"deviceName": "new name",
"did": "ir.837371837843460096"
}
]
}
单击遥控器按键
- 接口intent:write.ir.click
- 接口描述:本接口用于控制遥控器按键。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
did |
String |
是 |
设备ID(当还没有遥控器的设备id时传入网关did,有则传遥控器的设备id) |
brandId |
Integer |
否 |
品牌id(空调匹配时必填) |
controllerId |
String |
否 |
遥控器id(当没有遥控器的设备id时该字段必传) |
keyId |
String |
否 |
红外Key(非空调和无状态空调使用该字段) |
isAcMatch |
String |
否 |
空调伴侣必填,0-已匹配;1-匹配中 |
acKey |
String |
否 |
空调类key(有状态空调时必填,无状态空调使用keyId字段),有状态空调传入规则:开空调:P0 ; 关空调:P1。空调状态:Mm_Ty_Ss 。m表示模式(0:制冷,1:制热,2:自动,3:送风,4:除湿);y表示温度(温度范围一般为16~30);*s表示风速(0:自动,1:小风量,2:中风量,3:大风量) |
{
"intent": "write.ir.click",
"data": {
"did": "ir.837371837843460096",
"brandId": 1077,
"controllerId": 4676,
"keyId": "1"
}
}
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {}
}
查询有状态空调状态(仅用于空调伴侣P3和M2网关)
- 接口intent:query.ir.acState
- 接口描述:本接口用于查询有状态空调的详细信息,如温度、模式、风速等。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
did |
String |
是 |
设备ID |
{
"intent": "query.ir.acState",
"data": {
"did": "ir.837392177046114304"
}
}
名称 |
类型 |
描述 |
acState |
String |
空调状态 Px_Mm_Ty_Ss_Dd x 表示开关 (AC_POWER_ON = 0, AC_POWER_OFF = 1) m 表示模式(0:制冷,1:制热,2:自动,3:送风,4:除湿) y 表示温度(温度范围一般为16~30) s 表示风速( 0:自动,1:小风量,2:中风量,3:大风量) * d 表示风向(0 表示扫风,其他值表示固定风向)(例如:P0_M0_T26_S0_D0) |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"acState": "P1_M0_T26_S0"
}
}
查询遥控器功能
- 接口intent:query.ir.functions
- 接口描述:本接口用于查询遥控器支持的功能列表。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
did |
String |
否 |
设备ID |
controllerId |
Integer |
否 |
遥控器ID |
注:did 与 controllerId参数至少必填一个
{
"intent": "query.ir.functions",
"data": {
"did": "ir.837392177046114304"
}
}
名称 |
类型 |
描述 |
modes |
Array(Objects) |
模式数组,详情见 modes 说明 |
type |
Int |
1:无状态空调;2:有状态空调 |
models 说明:
名称 |
类型 |
描述 |
mode |
Int |
空调模式(0制冷,1制热,2自动,3送风,4除湿) |
temps |
Array(int) |
温度范围一般为16~30 |
speeds |
Array(int) |
0:自动,1:小风量,2:中风量,3:大风量 |
directs |
Array(int) |
固定风向方向,控制时循环切换(当支持固定风向时才会有值) |
type (models内参数) |
Int |
0 无风向功能 1 仅支持固定风向 2支持固定风向和扫风 |
light |
Array(int) |
灯光控制:0关灯光,1开灯光 |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"modes": [
{
"mode": 2,
"speeds": [],
"directs": [
1
],
"type": 2,
"temps": [
17,
18,
19
]
},
{
"mode": 3,
"speeds": [
0,
1,
2,
3
],
"directs": [
1
],
"type": 2,
"temps": []
}
],
"type": 2
}
}
查询遥控器按键(仅查询无状态遥控器)
- 接口intent:query.ir.keys
- 接口描述:本接口用于查询无状态遥控器的按键信息,如温度、模式、风速等。
- 请求参数:
名称 |
类型 |
是否必须 |
描述 |
did |
String |
否 |
设备id |
{
"intent": "query.ir.keys",
"data": {
"did": "ir.837371837843460096"
}
}
名称 |
类型 |
描述 |
keys |
string |
遥控器键数组。详情见keys说明 |
type |
Integer |
遥控器类型 |
keys 说明
名称 |
类型 |
描述 |
keyName |
string |
遥控器键值名称 |
controllerId |
Integer |
遥控器id |
irKeyId |
string |
定位唯一红外码的id |
keyId |
string |
遥控器按键id |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"keys": [
{
"controllerId": 4676,
"irKeyId": "ir.837371837843460096,1",
"keyName": "POWER",
"keyId": "1"
},
{
"controllerId": 4676,
"irKeyId": "ir.837371837843460096,23",
"keyName": "TIMER",
"keyId": "23"
},
{
"controllerId": 4676,
"irKeyId": "ir.837371837843460096,9362",
"keyName": "SWING",
"keyId": "9362"
},
{
"controllerId": 4676,
"irKeyId": "ir.837371837843460096,9367",
"keyName": "FAN_SPEED",
"keyId": "9367"
},
{
"controllerId": 4676,
"irKeyId": "ir.837371837843460096,9372",
"keyName": "SWING_MODE",
"keyId": "9372"
}
],
"type": 1
}
}
开启红外学习
- 接口intent:write.ir.startLearn
- 接口描述:本接口用于开启网关设备的红外学习功能。
- 请求参数
名称 |
类型 |
是否必须 |
描述 |
did |
String |
是 |
网关设备ID |
timeLength |
Int |
否 |
保持学习状态的时间,默认30秒,最大30秒 |
{
"intent": "write.ir.startLearn",
"data": {
"did": "ir.837371837843460096",
"timeLength": 20
}
}
名称 |
类型 |
描述 |
keyId |
string |
学习的红外按键id |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"keyId": "key01837419477205471232"
}
}
取消红外学习
- 接口intent:write.ir.cancelLearn
- 接口描述:本接口用于关闭网关设备的红外学习功能。
- 请求参数
名称 |
类型 |
是否必须 |
描述 |
did |
String |
是 |
网关设备ID |
keyId |
String |
否 |
学习的红外id |
{
"intent": "write.ir.cancelLearn",
"data": {
"did": "ir.837371837843460096",
"keyId": "key01837419477205471232"
}
}
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": ""
}
查询红外学习结果
- 接口intent:query.ir.learnResult
- 接口描述:本接口用于查询网关设备的红外学习结果。
- 请求参数
名称 |
类型 |
是否必须 |
描述 |
did |
String |
是 |
网关设备ID |
keyId |
String |
否 |
学习的红外id |
{
"intent": "query.ir.learnResult",
"data": {
"did": "ir.837371837843460096",
"keyId": "key01837419477205471232"
}
}
名称 |
类型 |
描述 |
did |
string |
网关设备ID |
keyId |
String |
学习的红外id |
ircode |
String |
红外码 |
freq |
String |
频率 |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {}
}
添加自定义遥控器
- 接口intent:config.ir.custom
- 接口描述:当红外设备类型不满足需求时,可通过本接口添加自定义遥控器。
- 请求参数
名称 |
类型 |
是否必须 |
描述 |
parentDId |
String |
是 |
网关id |
name |
String |
是 |
遥控器名字 |
positionId |
String |
否 |
设备位置ID,为空取默认位置 |
irCodeInfos |
List |
是 |
红外码按键key信息 |
irCodeInfos信息(详细结构示例)
名称 |
类型 |
是否必须 |
描述 |
keyName |
String |
是 |
按键名称 |
keyId |
String |
是 |
按键key |
ircode |
String |
是 |
红外码值(云端推送给第三方,第三方传过来) |
freq |
String |
否 |
频率(云端推送给第三方,第三方传过来) |
{
"intent": "config.ir.custom",
"data": {
"parentDid": "virtual2.32056709824364",
"name": "客厅电视遥控器",
"irCodeInfos": [
{
"keyId": "1",
"keyName": "电源开关",
"ircode": "1"
}
]
}
}
名称 |
类型 |
描述 |
did |
string |
遥控器设备ID |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"did": "ir.837426350893780992"
}
}