IR device management
Currently, the devices that support infrared function are: Air Condition Controller P3, M2 Hub.
Query infrared device type list
- API intent: query.ir.categories
- Description: This interface is used to query the types of infrared devices currently supported, such as TVs, air conditioners, etc.
- Request parameters: NA
- Request Demo
{
"intent": "query.ir.categories",
"data": {}
}
Name |
Type |
Description |
categoryId |
Integer |
Infrared device type id |
enName |
String |
Device type English name |
iconId |
String |
Icon id |
name |
String |
Device type Chinese name |
model |
String |
Device model |
{
"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
}
]
}
Query brand list based on device type
- API intent: query.ir.brands
- Description: This interface can query the list of supported brands according to the type of infrared device.
- Request parameters
Name |
Type |
Is required? |
Description |
categoryId |
Integer |
Yes |
Infrared device type id |
{
"intent": "query.ir.brands",
"data": {
"categoryId": 1
}
}
Name |
Type |
Description |
brandId |
int |
Brand id |
enName |
String |
Brand English name |
pinyin |
String |
pinyin |
name |
String |
Brand Chinese name |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": [
{
"iconId": 307,
"pinyin": "aihua",
"enName": "Aiwa",
"name": "Aiwa"
},
{
"iconId": 151,
"pinyin": "aoguangkeji",
"enName": "Aoguang",
"name": "Aoguang"
},
{
"iconId": 452,
"pinyin": "bubugao",
"enName": "BBK",
"name": "BBK"
}
]
}
- API intent: query.ir.match
- Description: This interface can query infrared matching tree information according to the type and brand of infrared devices, including key functions, such as switch, wind speed, etc.
- Request parameters
Name |
Type |
Is required? |
Description |
type |
Integer |
Yes |
1 Query by category and brand |
categoryId |
Integer |
Yes |
Category id (returned by obtaining device Type list) |
brandId |
String |
Yes |
Brand id |
{
"intent": "query.ir.match",
"data": {
"type": 1,
"categoryId": 8,
"brandId": 1077
}
}
Name |
Type |
Description |
category |
Object |
Categories to which this matching tree applies |
brand |
Object |
The brand to which this match tree applies |
keys |
Array(Object) |
Keys that may be used in the matching tree |
nodes |
Array(Object) |
Schemes that may be used in the matching tree |
version |
String |
Version |
category description
Name |
Type |
Description |
id |
Integer |
Category id |
name |
String |
Category name |
brand description
Name |
Type |
Description |
id |
Integer |
Brand id |
name |
String |
Brand Name |
enName |
String |
Brand English name |
keys description
Name |
Type |
Description |
id |
Integer |
Brand id |
name |
String |
Brand Name |
enName |
String |
Brand English name |
mustMatch |
Boolean |
Is it matched |
nodes description
Name |
Type |
Description |
cursor |
Integer |
Current scheme cursor |
mismatched |
Integer |
If it does not match, the next node id to be matched, if it is null, it means the match failed |
total |
Integer |
Total number of plans |
controller_id |
Integer |
Remote control id |
count |
Integer |
Number of remaining plans |
matched |
Integer |
If it matches, the next node id to be matched. If this field is null, it means the match is successful, and the target remote control id is the controller_id |
id |
Integer |
Plan id |
key |
Object |
The key information of the scheme, please refer to the key description for details |
{
"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"
}
}
Add remote control
- API intent: config.ir.create
- Description: This interface is used to create an infrared remote control.
- Request parameters
Name |
Type |
Is required? |
Description |
parentDId |
String |
Yes |
Gateway id |
positionId |
String |
No |
Position id |
categoryId |
Integer |
Yes |
categoryId of the remote control, (returned by obtaining the device Type list) |
brandId |
Integer |
Yes |
Remote control brand ID, (returned by the brand list obtained by obtaining the device Type) |
controllerId |
Integer |
Yes |
Remote control id |
name |
String |
Yes |
Remote control Name |
{
"intent": "config.ir.create",
"data": {
"brandId": 1077,
"categoryId": 8,
"name": "name",
"parentDid": "virtual2.32056709824364",
"controllerId": 4676
}
}
Name |
Type |
Description |
did |
String |
Remote control device id |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"did": "ir.837355405973868544"
}
}
Delete remote control
- API intent: config.ir.delete
- Description: This interface is used to delete an infrared remote control.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
Yes |
Remote control device id |
{
"intent": "config.ir.delete",
"data": {
"did": "ir.837355405973868544"
}
}
Response parameters: NA
Response demo
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": ""
}
Update remote control
- API intent: config.ir.update
- Description: This interface is used to modify the name of the infrared remote control.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
Yes |
Device ID of the remote control to be updated |
name |
String |
Yes |
Device Name of the remote control to be updated |
{
"intent": "config.ir.update",
"data": {
"did": "ir.837371837843460096",
"name": "new name"
}
}
Response parameters: NA
Response demo
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": ""
}
- API intent: query.ir.info
- Description: This interface is used to query the detailed information of the infrared remote control, including brand, type, creation time, etc.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
Yes |
Device ID of the remote control to be updated |
{
"intent": "query.ir.info",
"data": {
"did": "ir.837371837843460096"
}
}
Name |
Type |
Description |
did |
String |
Device ID of the remote control |
controllerId |
int |
Remote control id |
categoryId |
int |
Remote control type |
brandId |
int |
Remote control brand id |
brandName |
String |
Brand Name |
type |
int |
Air conditioner only (0 and 1 means stateless air conditioner, 2 means stateful air conditioner) |
createTime |
long |
Remote control creation time, time stamp |
updateTime |
long |
Remote control update time, time stamp |
{
"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
}
}
Query the remote control list under the gateway
- API intent: query.ir.list
- Description: This interface is used to query the infrared remote control list under the specified gateway device.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
Yes |
Gateway ID |
{
"intent": "query.ir.list",
"data": {
"parentDid": "virtual2.32056709824364"
}
}
Name |
Type |
Description |
did |
String |
Device id |
state |
Integer |
Device status (1 online, 0 offline) |
positionId |
String |
Position id |
parentDid |
String |
Parent device id |
deviceName |
String |
Device Name |
model |
String |
Device model |
type |
int |
0 and 1 mean stateless air conditioning, 2 means stateful air conditioning |
{
"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"
}
]
}
- API intent: write.ir.click
- Description: This interface is used to control the keys of the remote control.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
Yes |
Device ID (when there is no device id of the remote control, it will be passed into the gateway did) |
brandId |
Integer |
No |
Brand id (required when the air conditioner is matched) |
controllerId |
String |
No |
Remote control id (this field is required when there is no remote control device id) |
keyId |
String |
No |
Infrared Key (this field is used for non-air conditioners and stateless air conditioners) |
isAcMatch |
String |
No |
Air condition controller is required, 0-matched; 1-matching |
acKey |
String |
No |
Air conditioner key (required for stateful air conditioner, keyId field for stateless air conditioner), state air conditioner incoming rule: Turn on air conditioner: P0; Turn off air conditioning: P1; Air conditioning status: Mm_Ty_Ss; m indicates mode (0: cooling, 1: heating, 2: automatic, 3: wind, 4: dry); y indicates temperature (temperature range is 16~30); *s indicates wind speed (0: automatic, 1: low, 2: middle, 3: high); For example, if the air conditioning state is controlled to be refrigeration, 18 degrees, and the amount of high air is passed, M0_T18_S3 is transmitted. |
{
"intent": "write.ir.click",
"data": {
"did": "ir.837371837843460096",
"brandId": 1077,
"controllerId": 4676,
"keyId": "1"
}
}
Response parameters: NA
Response demo
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {}
}
Query the state of the stateful air conditioner
- API intent: query.ir.acState
- Description: This interface is used to query the detailed information of the stateful air conditioner, such as temperature, mode, wind speed, etc.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
Yes |
Device id |
{
"intent": "query.ir.acState",
"data": {
"did": "ir.837392177046114304"
}
}
Name |
Type |
Description |
acState |
String |
Air conditioning status Px_Mm_Ty_Ss_Dd x means switch (AC_POWER_ON = 0, AC_POWER_OFF = 1) m means mode (0: cooling, 1: heating, 2: automatic, 3: air supply, 4: dehumidification) y means temperature (temperature range) Generally 16~30) s means wind speed (0: automatic, 1: low, 2: medium, 3: high) * d means wind direction (0: sweep wind, other values mean fixed wind direction) (for example: P0_M0_T26_S0_D0 ) |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"acState": "P1_M0_T26_S0"
}
}
Query remote control function
- API intent: query.ir.functions
- Description: This interface is used to query the list of functions supported by the remote control.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
No |
Device ID |
controllerId |
Integer |
No |
Remote control id |
Note: At least one of the did and controllerId parameters must be filled in.
{
"intent": "query.ir.functions",
"data": {
"did": "ir.837392177046114304"
}
}
Name |
Type |
Description |
modes |
Array(Objects) |
Mode array, see modes description for details |
type |
Int |
1: Stateless air conditioning; 2: Stateful air conditioning |
models description
Name |
Type |
Description |
mode |
Int |
Air conditioning mode (0 cooling, 1 heating, 2 automatic, 3 air supply, 4 dehumidification) |
temps |
Array(int) |
The temperature range is 16~30. |
speeds |
Array(int) |
0: automatic, 1: low, 2: middle, 3: high |
directs |
Array(int) |
Fixed wind direction, cyclically switched during control (only value is available when fixed wind direction is supported) |
type (parameters in models) |
Int |
0 No wind direction function 1 Only supports fixed wind direction 2 Supports fixed wind direction and sweeping wind |
light |
Array(int) |
Light control: 0 turn off the light, 1 turn on the light |
{
"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
}
}
- API intent: query.ir.keys
- Description: This interface is used to query the key information of the stateless remote control, such as temperature, mode, wind speed, etc.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
No |
Device id |
{
"intent": "query.ir.keys",
"data": {
"did": "ir.837371837843460096"
}
}
Name |
Type |
Description |
keys |
string |
Array of remote control keys. See the keys description for details |
type |
Integer |
Remote control type |
keys description
Name |
Type |
Description |
keyName |
string |
Remote control key Name |
controllerId |
Integer |
Remote control id |
irKeyId |
string |
Locate the id of the unique infrared code |
keyId |
string |
Remote control button 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
}
}
Start infrared learning
- API intent: write.ir.startLearn
- Description: This interface is used to enable the infrared learning function of the Hub device.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
Yes |
Gateway device ID |
timeLength |
Int |
No |
Time to stay in learning, default is 30 seconds. The maximum is 30. |
{
"intent": "write.ir.startLearn",
"data": {
"did": "ir.837371837843460096",
"timeLength": 20
}
}
Name |
Type |
Description |
keyId |
string |
Learning infrared id |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"keyId": "key01837419477205471232"
}
}
Cancel infrared learning
- API intent: write.ir.cancelLearn
- Description: This interface is used to turn off the infrared learning function of the Hub device.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
Yes |
Gateway device ID |
keyId |
String |
No |
Learning infrared id |
{
"intent": "write.ir.cancelLearn",
"data": {
"did": "ir.837371837843460096",
"keyId": "key01837419477205471232"
}
}
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": ""
}
Query infrared learning results
- API intent: query.ir.learnResult
- Description: This interface is used to query the infrared learning result of the Hub device.
- Request parameters
Name |
Type |
Is required? |
Description |
did |
String |
Yes |
Gateway device ID |
keyId |
String |
No |
Learning infrared id |
{
"intent": "query.ir.learnResult",
"data": {
"did": "ir.837371837843460096",
"keyId": "key01837419477205471232"
}
}
Name |
Type |
Description |
did |
string |
Gateway device ID |
keyId |
String |
Learning infrared id |
ircode |
String |
Infrared code |
freq |
String |
Frequency |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {}
}
Add a custom remote control
- API intent: config.ir.custom
- Description: When the type of infrared device does not meet the requirements, a custom remote control can be added through this interface.
- Request parameters
Name |
Type |
Is required? |
Description |
parentDId |
String |
Yes |
Gateway device ID |
name |
String |
Yes |
Remote name |
positionId |
String |
No |
Position id, empty to take the default position |
irCodeInfos |
List |
Yes |
Infrared code button key information |
irCodeInfos description
Name |
Type |
Is required? |
Description |
keyName |
String |
Yes |
Key name |
keyId |
String |
Yes |
Key id |
ircode |
String |
Yes |
Infrared code value |
freq |
String |
No |
Frequency |
{
"intent": "config.ir.custom",
"data": {
"parentDid": "virtual2.32056709824364",
"name": "test remote",
"irCodeInfos": [
{
"keyId": "1",
"keyName": "电源开关",
"ircode": "1"
}
]
}
}
Name |
Type |
Description |
did |
string |
Remote control device id |
{
"code": 0,
"message": "Success",
"msgDetails": "",
"requestId": "",
"result": {
"did": "ir.837426350893780992"
}
}