我正在为 Alexa 开发一项智能家居技能,其中涉及控制具有各种功能的灯,例如亮度、色温 (CT) 等。我已经成功解决了所有其他问题,包括 CT、颜色和开/关功能。然而,我在通过与亮度功能特别相关的自动化测试时遇到了困难。
我的问题是运行自动化测试时的亮度问题,我收到亮度错误,详细信息如下;
场景一: 假设请求之前的初始状态是亮度设置为 75。
在第一个场景中,我保留了“SetBrightness”命令将其设置为 0 之前的亮度值,这也可以作为关闭灯的信号。
要求:
{
"directive":{
"header":{
"namespace":"Alexa.BrightnessController",
"name":"SetBrightness",
"messageId":"fed54fb1-a40e-42c5-819d-53894fb19fd8",
"correlationToken":"ctooken",
"payloadVersion":"3",
"endpoint":{
"scope":{
"type":"BearerToken",
"token":"token",
"endpointId":"b38d964c-0b55-4b9a-8c0c-c537721bd2e5",
"cookie":{},
"payload":{
"brightness":0
}
}
}
}
}
}
回应:
{
"event":{
"header":{
"namespace":"Alexa",
"name":"Response",
"messageId":"fed54fb1-a40e-42c5-819d-53894fb19fd8-R",
"correlationToken":"ctoken",
"payloadVersion":"",
"endpoint":{
"endpointId":"b38d964c-0b55-4b9a-8c0c-c537721bd2e5",
"scope":{
"token":"token",
"type":"BearerToken"
},
"payload":{},
"context":{
"properties":[
{
"namespace":"Alexa.BrightnessController",
"value":75,
"name":"brightness",
"timeOfSample":"2023-09-08T05:30:10.410Z",
"uncertaintyInMilliseconds":3000
},
{
"namespace":"Alexa.PowerController",
"value":"OFF,
"name":"powerState",
"timeOfSample":"2023-09-08T05:30:10.410Z",
"uncertaintyInMilliseconds":3000
}
]
}
}
}
}
}
运行测试时,我从 https://developer.amazon.com/alexa/console
开始错误:
"The endpoint could not be set to the Initial States required by the Test Case."
场景2: 假设初始亮度设置为100。
在第二种情况下,我将亮度设置为“SetBrightness”命令中指定的值。如果命令指示将亮度设置为 0,我将报告亮度值为零并关闭灯。
要求:
{
"directive": {
"header": {
"namespace": "Alexa.BrightnessController",
"name": "SetBrightness",
"messageId": "fed54fb2-a40e-42c5-819d-53894fb19fd8",
"correlationToken": "ctooken",
"payloadVersion": "3",
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "token-",
"endpointId": "b38d964c-0b55-4b9a-8c0c-c537721bd2e5",
"cookie": {},
"payload": {
"brightness": 0
}
}
}
}
}
}
回应:
{
"event": {
"header": {
"namespace": "Alexa",
"name": "Response",
"messageId": "fed54fb1-a40e-42c5-819d-53894fb19fd8-R",
"correlationToken": "ctoken",
"payloadVersion": "3",
"endpoint": {
"endpointId": "b38d964c-0b55-4b9a-8c0c-c537721bd2e5",
"scope": {
"token": "token",
"type": "BearerToken"
},
"payload": {},
"context": {
"properties": [
{
"namespace": "Alexa.BrightnessController",
"value": 0,
"name": "brightness",
"timeOfSample": "2023-09-08T05:30:10.410Z",
"uncertaintyInMilliseconds": 3000
},
{
"namespace": "Alexa.PowerController",
"value": "OFF",
"name": "powerState",
"timeOfSample": "2023-09-08T05:30:10.410Z",
"uncertaintyInMilliseconds": 3000
}
]
}
}
}
}
}
评估结果错误:
{
"name": "DevRe_9.1",
"status": "FAILED",
"expectedCapabilityStates": [
{
"namespace": "Alexa.BrightnessController",
"name": "brightness",
"value": 100
}
],
"directive": {
"header": {
"namespace": "Alexa.PowerController",
"name": "TurnOn"
},
"payload": {}
},
"actualCapabilityStates": [
{
"namespace": "Alexa.BrightnessController",
"name": "brightness",
"value": 0
}
]
},
在上面的EvaluationResults中,在我看来它想要返回100,这是问题setBrightness=0之前的值。
这里的问题是,当将亮度设置为(0)零时,会发出什么预期响应? 稍后发出
ReportState
时预期值是多少?
对于场景 1:您的技能只需设置 value=0 并将 value=0 发送回 Alexa。 SetBrightness 是来自 Alexa(用户)的请求,用于将您的设备值设置为特定值。 对于场景 2: 似乎测试期望设备在打开时返回 value=100。但是,如果在设备关闭(值=0)期间询问设备状态报告,则设备应以当前状态(值=0)响应。