# 设备发现 (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"
             }
         ]
    }
}