# 红外控制API

红外功能旨在接入传统家电至iFLYOS内置智能家居控制技能,只需与iFLYOS进行云到云接入之后,建立与红外主控设备的红外数据传输,用户即可进行语音控制。

# 添加设备流程

# 控制服务流程

# 接入步骤:

# STEP1:iFLYOS企业平台添加主控设备信息

  1. 在iFLYOS企业平台设备接入选择添加设备,填写设备信息添加成功之后进入设备详情页;

  2. 选择设备能力Tab页,点击打开外部控制能力的红外能力按钮,填写转换服务的链接;

  3. 若设备还未发布的情况下,需要在设备测试页添加白名单账号;

  4. 在小飞在线的主控设备页选择添加对应设备;添加成功后,刷新主控设备页会出现带有红外标签的设备;

# STEP2:添加红外被控设备

# 1.按键测试

请求地址:

https://home.iflyos.cn/web/smart_home/iot/user/accept/infrared

请求参数:

Content-Type: application/json
Authorization: Bearer access token
{
    "clientDeviceId": "clientId.deviceId",
    "extends": {
        ...
    }
}

字段说明:

参数名 类型 说明 必填
clientDeviceId string 主控设备ID,clientId.deviceId 是
extends json 控制红外被控设备所需的原始数据,由iFLYOS云服务直接封装成控制指令下发至主控设备执行 是

正常响应

Status: 200 OK
{}

异常响应

Status: 400
{
 "message": "error"
}

# 2.添加设备信息

请求地址:

https://home.iflyos.cn/web/smart_home/iot/user/device/infrared/add

请求参数:

Content-Type: application/json
Authorization: Bearer access token
{
  "extends": {
     ...
  },
  "clientDeviceId": "clientId.deviceId"
}

字段说明:

参数名 类型 说明 必填
clientDeviceId string 主控设备ID,clientId.deviceId 是
extends json 控制红外被控设备所需的原始数据,iFLYOS云服务接收数据之后需经过红外数据转换服务转换数据入库 是

正常响应

Status: 200 OK
{
  "message": "保存成功"
}

异常响应

Status: 400
{
  "message": "保存失败"
}

# 3.添加设备之后在被控设备页红外Tab可看到对应红外设备,可通过语音指令进行控制。

# 转换服务

该服务链接用于将iFLYOS服务发出的智能家居请求与主控设备可识别的外红控制数据的相互转换,将转换后的信息回复给iFLYOS服务,iFLYOS会将转化后的信息透传至设备,设备接收指令进行相应执行。

# 添加设备请求

当用户在APP添加设备时,你的转换服务会收到该请求。

消息示例

{
  "header":{
    "namespace":"iFLYOS.IoT.Infrared.Device.Discovery",
    "name":"DiscoveryDevices",
    "messageId":"1bd5d003-31b9-476f-ad03-71d471922820"
  },
  "payload":{
    "extends":{
      "zone":"房间",
      "type":"1",
      "supportKeys":[
        {
          "key_name":"开机",
          "key_id":1
        }
      ],
      "id":"xxxx",
      "friendlyName":"this is a name",
      "frequency":"39080",
      "exts":"Eg0R8otNJi8PUuW...",
      "deviceType": 8,
      "brand":"this is a brand"
    }
  }
}

payload参数说明

参数 说明 类型 必须出现 可否为空
extends 红外被控设备数据,在请求添加设备信息接口时的请求参数 json 是 否

extends示例说明

注意

此处仅是示例,你可以自定义extends中的内容。

参数名 类型 说明
id string 被控设备ID
type int 设备遥控类型
frequency int 红外频率
zone string 位置
brand string 品牌
friendlyName string 自定义名称
deviceType int 设备类型
exts string 加密串

# 添加设备响应

消息示例

{
  "header": {
    "namespace": "iFLYOS.IoT.Infrared.Device.Discovery",
    "name": "DiscoveryDevicesResponse",
    "messageId": "1bd5d003-31b9-476f-ad03-71d471922820",
    "payloadVersion": 1
  },
  "payload": {
    "devices": [
      {
        "deviceId": "xxxx",
        "deviceName": "风扇",
        "deviceType": "fan",
        "brand": "this is a brand",
        "model": "this is a brand",
        "zone": "房间",
        "icon": "https//...",
        "version": "1.1.1",
        "friendlyBrand": "this is a brand",
        "friendlyName": "this is a name",
        "friendlyDescription": "房间的...",
        "online": true,
        "actions": [
          "TurnOn"
        ],
        "attributes":[],
        "extensions": {
            "exts": "",
            "frequency": ""
            ...
        },
        "functions":{},
        "condition":{}
      }
    ]
  }
}

参数说明

你需要返回符合智能家居设备发现文档 (opens new window)要求的数据。

其中,condition是你的设备参数,非必填。

# 控制红外设备请求

当用户控制设备时,你的转换服务会收到该请求。

消息示例

{
  "header":{
    "namespace":"iFLYOS.IoT.Infrared.Device.Control",
    "name":"TurnOn",
    "messageId":"1bd5d003-31b9-476f-ad03-71d471922820",
    "payloadVersion":1
  },
  "payload":{
    "condition": {},
    "deviceId":"xxx",
    "extensions": {
        "exts": "",
        "frequency": "",
        ...
    }
  }
}

payload参数说明

参数 说明 类型 必须出现 可否为空
condition 设备参数 object 否 是
deviceId 要控制的设备ID,与添加设备的响应中你返回的deviceId一致 string 是 是
extentions 与添加设备的响应中你返回的extentios一致 object 是 否

# 控制红外设备响应

{
    "header":{
        "namespace":"iFLYOS.IoT.Infrared.Device.Control",
        "name":"Response",
        "messageId":"1bd5d003-31b9-476f-ad03-71d471922820",
        "payloadVersion":1
    },
    "payload":{
        "extends":{
            "exts": "",
            "frequency": "",
            ...
        }
    }
}

# payload参数说明

参数 说明 类型 必须出现 可否为空
extends 该数据会直接推送至设备端控制红外被控设备 json 是 否