# 设备发现 (Discovery Messages )
这些消息类型用于发现该技能适配器可用的设备和功能。
- DiscoverAppliancesRequest
- DiscoverAppliancesResponse
# DiscoverAppliancesRequest
示例语句:
“小微,发现我的智能家居设备”
目的:发现与最终用户的设备云账户相关的设备。 DiscoverAppliancesRequest从Smart Home Skill API发送到技能适配器,目的是发现与客户的设备云账户相关的设备。如果没有设备可以发现,或者您的设备云遇到错误,则技能适配器应返回一个空的DiscoverAppliancesResponse,而不是错误消息。
Header
属性 | 值 |
---|---|
name | DiscoverAppliancesRequest |
namespace | SmartHome.Discovery |
Payload
属性 | 描述 | 是否必需 |
---|---|---|
accessToken | 与客户的设备云账户相关的访问令牌 | 是 |
openUid | 被授权的小微账号开放ID,与设备云账号一一对应。设备云端需要将该字段与用户账号一一对应起来存储,其它协议中如果需要携带openUid字段时,则需要返回用户账号对应的openUid值。 | 是 |
DiscoverAppliancesRequest示例:
{
"header": {
"messageId": "9422676d-2356-4aa7-aa88-c642f12bfcd6",
"name": "DiscoverAppliancesRequest",
"namespace": "SmartHome.Discovery",
"payloadVersion": "2"
},
"payload": {
"accessToken": "*OAuth Token here*"
}
}
# DiscoverAppliancesResponse
小微响应示例:参考下方的DiscoverAppliancesResponse示例。
目的:返回与最终用户的设备云账户相关联的所有设备。技能适配器对DiscoverAppliancesRequest的Smart Home Skill API的预期响应。如果没有要发现的设备或者您的设备云遇到错误,请返回一个空的discoveryAppliances数组。
Header
属性 | 值 |
---|---|
name | DiscoverAppliancesResponse |
namespace | SmartHome.Discovery |
Payload
属性 | 描述 | 是否必需 |
---|---|---|
discoveredAppliances | 代表与客户的设备云账户相关联的可发现设备的结构数组。 如果没有与客户账户关联的设备,此属性应包含一个空数组。 如果发生错误,该属性可以为null。 数值的最大个数为300.列表中的每个项目的属性如下所示。 | 是 |
discoveredAppliance.applianceId | 设备标识符。 标识符在技能适配器的域内的所有设备上必须是唯一的(不同用户的不同设备也不能重复)。 此外,标识符需要在同一设备的多个发现请求之间保持一致。 标识符可以包含任何字母或数字和以下特殊字符:_ - = # ; : ? @ &。 标识符不能超过256个字符。 | 是 |
discoveredAppliance.manufacturerName | 设备制造商的名称。 此值不能超过128个字符。 | 是 |
discoveredAppliance.modelName | 设备型号名称。 此值不能超过128个字符。 | 是 |
discoveredAppliance.version | 供应商提供的设备版本。 此值不能超过128个字符。 | 是 |
discoveredAppliance.applianceType | 供应商提供的设备类型 例如"light",取值范围见下面的《4.设备类型》定义。 | 是 |
discoveredAppliance.friendlyName | 客户用来识别设备的名称。 此值不能超过128个字符,不应包含特殊字符或标点符号。 | 是 |
discoveredAppliance.friendlyDescription | 设备的可读描述。 此值不能超过128个字符。 描述应包含设备连接方式的描述。 例如,“通过Wink连接的WiFi温控器”。 | 是 |
discoveredAppliance.status 对象 | 设备的状态。 | 否 |
discoveredAppliance.status.deviceTemperature | 设备的温度状态。 | 否 |
discoveredAppliance.status.deviceColorHue | 设备的色调,范围0.0~360.0。 | 否 |
discoveredAppliance.status.deviceColorSaturation | 设备的饱和度,范围0.0000~1.0000。 | 否 |
discoveredAppliance.status.deviceColorTemperature | 设备的色温,有效范围为1000 ~10000(含)。 | 否 |
discoveredAppliance.status.deviceColorBrightness | 设备的颜色亮度0.0000-1.0000。 | 否 |
discoveredAppliance.status.deviceSwitch | 开关状态:flase:关闭, true:打开。 | 否 |
discoveredAppliance.status.devicePercent | 设置设备(亮度等)的百分比:精度为两位小数。 | 否 |
discoveredAppliance.status.deviceVolumeMin | 设备的音量最小值。 | 否 |
discoveredAppliance.status.deviceVolumeMax | 设备的音量最大值。 | 否 |
discoveredAppliance.status.deviceVolume | 设备的音量, 范围(dev_att_volume_min-dev_att_volume_max)。 | 否 |
discoveredAppliance.status.deviceMute | 设备的静音状态:flase:未静音, true:静音。 | 否 |
discoveredAppliance.status.deviceWindSpeedMin | 设备的风速最小值。 | 否 |
discoveredAppliance.status.deviceWindSpeedMax | 设备的风速最大值。 | 否 |
discoveredAppliance.status.deviceWindSpeed | 设备的风速, 范围(dev_att_wind_speed_min,dev_att_wind_speed_max)含。 | 否 |
discoveredAppliance.status.deviceModeRange | 设备支持的模式,格式为[{"modeId":"模式id",modeName:"制冷模式"}]。 | 否 |
discoveredAppliance.status.deviceMode | 设备当前模式,格式为[{"modeId":"模式id",modeName:"制冷模式"}]。 | 否 |
discoveredAppliance.status.deviceIsOnline | 设备是否在线 :true:在线, false:不在线。 | 是 |
discoveredAppliance.status.deviceIsAuthorize | 设备是否授权 :true:已授权, false:未授权。 | 是 |
discoveredAppliance.actions | 此设备支持的一系列操作。 此指令的有效操作包括: TurnOff:打开 TurnOn:关闭 SetPercentage:设置百分比 IncrementPercentage:增加百分比 DecrementPercentage:减少百分比 SetBrightness:设置亮度 IncrementBrightness:增加亮度 DecrementBrightness:减少亮度 SetTargetTemperature:设置温度 IncrementTargetTemperature:增加温度 DecrementTargetTemperature:减少温度 GetTargetTemperature:读取设置目标温度 GetTemperatureReading:读取传感器温度 SetColor:设置颜色 SetColorTemperature:设置色温 IncrementColorTemperature:提升色温(冷) DecrementColorTemperature:降低色温(暖) SetVolume:设置音量 IncrementVolume:增加音量 DecrementVolume:降低音量 Mute:静音 Unmute:取消静音 SetFanSpeed:设置风速 IncrementFanSpeed:增加风速 DecrementFanSpeed:降低风速 SelectChannel:切换电视频道 SetMode:设置模式 | 是 |
discoveredAppliance.additionalApplianceDetails | 提供关于技能适配器使用的设备的附加信息的字符串名称/值对。 该属性的内容不能超过5000字节。 而且,Smart Home Skill API既不理解也不使用这些数据。 | 是,但列表可以为空。 |
discoveredAppliance.icon | 对应设备展示的图标。 | 是 |
supportScenes | 客户自定义的场景列表。如果用户没有自定义场景,此属性应包含一个空数组。 | 是,但列表可以为空。 |
supportScene.sceneId | 场景标识符。标识符在技能适配器的域内的所有场景上必须是唯一的(不同用户的不同场景也不能重复)。 此外,标识符需要在同一场景的多个发现请求之间保持一致。 标识符可以包含任何字母或数字和以下特殊字符:_ - = # ; : ? @ &。 标识符不能超过256个字符。 | 是 |
supportScene.sceneName | 场景名称 | 场景名称,规范再八个字之内;sceneName请勿加上"模式"两字,如回家模式对应sceneName=回家 |
supportScene.actions | 场景支持的操作。此指令的有效操作包括: ActivationScene DeactivateScene | 是 |
supportScene.icon | 对应场景展示的图标。 | 是 |
DiscoverAppliancesResponse示例:
{
"header": {
"messageId": "9ed9747d-caee-429e-b7ce-9104c82550ea",
"name": "DiscoverAppliancesResponse",
"namespace": "SmartHome.Discovery",
"payloadVersion": "2"
},
"payload": {
"discoveredAppliances": [
{
"actions": [
"IncrementTargetTemperature",
"DecrementTargetTemperature",
"GetTargetTemperature",
"SetTargetTemperature"
],
"status":{
"deviceTemperature": 25.90,
"deviceColorHue": 100.0,
"deviceColorSaturation": 0.2000,
"deviceColorTemperature": 4000,
"deviceColorBrightness": 0.2000,
"deviceSwitch": true,
"devicePercent": 30.23,
"deviceVolumeMin": 0,
"deviceVolumeMax": 100,
"deviceVolume": 50,
"deviceMute": false,
"deviceWindSpeedMin": 0,
"deviceWindSpeedMax": 5,
"deviceWindSpeed": 3,
"deviceModeRange": [{"modeId":"模式id",modeName:"制冷模式"}],
"deviceMode": [{"modeId":"模式id",modeName:"制冷模式"}],
"deviceIsOnline": true,
"deviceIsAuthorize": true
},
"additionalApplianceDetails": {
"extraDetail1": "optionalDetailForSkillAdapterToReferenceThisDevice",
"extraDetail2": "There can be multiple entries",
"extraDetail3": "but they should only be used for reference purposes.",
"extraDetail4": "This is not a suitable place to maintain current device state"
},
"applianceId": "uniqueThermostatDeviceId",
"friendlyDescription": "descriptionThatIsShownToCustomer",
"friendlyName": " Bedroom Thermostat",
"manufacturerName": "yourManufacturerName",
"modelName": "fancyThermostat",
"version": "your software version number here."
},
{
"actions": [
"IncrementPercentage",
"DecrementPercentage",
"IncrementColorTemperature",
"DecrementColorTemperature",
"IncrementBrightness",
"DecrementBrightness",
"SetPercentage",
"SetColor",
"SetColorTemperature",
"SetBrightness",
"TurnOn",
"TurnOff"
],
"status":{
"deviceTemperature": 25.90,
"deviceColorHue": 100.0,
"deviceColorSaturation": 0.2000,
"deviceColorTemperature": 4000,
"deviceColorBrightness": 0.2000,
"deviceSwitch": true,
"devicePercent": 30.23,
"deviceVolumeMin": 0,
"deviceVolumeMax": 100,
"deviceVolume": 50,
"deviceMute": false,
"deviceWindSpeedMin": 0,
"deviceWindSpeedMax": 5,
"deviceWindSpeed": 3,
"deviceModeRange": ["auto","heat","cool","dry","energy","sleep"],
"deviceMode": "auto",
"deviceIsOnline": true,
"deviceIsAuthorize": true
},
"additionalApplianceDetails": {},
"applianceId": "uniqueLightDeviceId",
"friendlyDescription": "descriptionThatIsShownToCustomer",
"friendlyName": "Living Room",
"manufacturerName": "yourManufacturerName",
"modelName": "fancyLight",
"version": "your software version number here."
}
],
"supportScenes": [
{
"actions": [
"ActivationScene"
],
"sceneId": "uniqueSceneId",
"sceneName": "回家",
"icon": "iconUrl"
},
{
"actions": [
"ActivationScene",
"DeactivateScene"
],
"sceneId": "uniqueSceneId",
"sceneName": "吃饭",
"icon": "iconUrl"
}
]
}
}