Вопрос или проблема
Я разработал навык для Alexa. Когда я пытаюсь войти в навык после добавления интерфейса RangeController, мои устройства не отображаются, все работало нормально до добавления нового интерфейса. Я получил JSON ответа Discovery с списком устройств, но приложение Alexa не может их распознать.
Ответ Discovery, когда устройства не отображаются в приложении:
{
"event": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover.Response",
"payloadVersion": "3",
"messageId": "3f178189-ac15-41a5-af4d-6d0da551491b"
},
"payload": {
"endpoints": [
{
"endpointId": "17202003@1d417d4b092a922a95761ed5909d2b65d866a3e4",
"manufacturerName": "Mnix",
"friendlyName": "Кран - 17202003",
"description": "17202003",
"displayCategories": [
"ДРУГОЕ"
],
"cookie": {},
"capabilities": [
{
"type": "AlexaInterface",
"interface": "Alexa",
"version": "3"
},
{
"type": "AlexaInterface",
"interface": "Alexa.PowerController",
"version": "3",
"properties": {
"supported": [
{
"name": "powerState"
}
],
"proactivelyReported": false,
"retrievable": false
}
},
{
"type": "AlexaInterface",
"interface": "Alexa.ThermostatController",
"version": "3",
"properties": {
"supported": [
{
"name": "targetSetpoint"
}
],
"proactivelyReported": false,
"retrievable": false
},
"configuration": {
"lockoutTemperature": {
"heating": {
"maximum": {
"value": 61,
"scale": "CELSIUS"
}
}
}
}
},
{
"type": "AlexaInterface",
"interface": "Alexa.RangeController",
"instance": "Faucet.Temperature",
"version": "3",
"properties": {
"supported": [{
"name": "rangeValue"
}],
"proactivelyReported": false,
"retrievable": false,
"nonControllable": false
},
"configuration": {
"supportedRange": {
"minimumValue": 1,
"maximumValue": 61,
"precision": 1
},
"presets": [
{
"rangeValue": 1,
"presetResources": {
"friendlyNames": [{
"@type": "asset",
"value": {
"assetId": "Alexa.Value.Low"
}
},
{
"@type": "text",
"value": {
"text": "Низкий",
"locale": "es-ES"
}
}
]
}
},
{
"rangeValue": 30,
"presetResources": {
"friendlyNames": [{
"@type": "asset",
"value": {
"assetId": "Alexa.Value.Medium"
}
},
{
"@type": "text",
"value": {
"text": "Средний",
"locale": "es-ES"
}
}
]
}
},
{
"rangeValue": 61,
"presetResources": {
"friendlyNames": [{
"@type": "asset",
"value": {
"assetId": "Alexa.Value.Maximum"
}
},
{
"@type": "asset",
"value": {
"assetId": "Alexa.Value.High"
}
},
{
"@type": "text",
"value": {
"text": "Высокий",
"locale": "es-ES"
}
}
]
}
}
]
}
}
]
}
]
}
}
}
Я пробовал использовать RangeController в качестве замены, как указано в следующем блоге, но безуспешно.
https://community.openhab.org/t/alexa-thermostat-will-not-allow-setpoint-greater-than-99-f/124965/5
Ответ или решение
Когда ваше устройство не отображается в приложении Alexa после добавления интерфейса RangeController, это может быть вызвано несколькими факторами. Давайте подробно рассмотрим, что может быть не так, и предложим решение.
Возможные причины проблемы:
-
Ошибки в формате Discovery Response: Убедитесь, что ваш JSON в Discovery Response соответствует требованиям, указанным в документации Alexa. Например, убедитесь, что все необходимые поля заполнены, и значения соответствуют ожидаемым типам данных.
-
Конфликт интерфейсов: Вы добавили интерфейс RangeController к устройству, которое уже имеет другие интерфейсы. Убедитесь, что все интерфейсы совместимы между собой.
-
Отсутствие свойств "proactivelyReported" и "retrievable": В вашем JSON указано, что оба поля установлены в
false
для нескольких интерфейсов. Попробуйте установитьproactivelyReported
вtrue
, чтобы ваше устройство могло отправлять обновления состояния. Полеretrievable
в некоторых случаях также должно бытьtrue
, чтобы Alexa могла запрашивать информацию о состоянии. -
Версия интерфейса: Убедитесь, что вы используете актуальные версии всех интерфейсов, согласно спецификации.
-
Валидация интерфейсов: Попробуйте протестировать работу вашего устройства с помощью интерфейсов
Alexa.ThermostatController
иAlexa.RangeController
по отдельности, чтобы удостовериться, что они корректно обрабатываются и отображаются.
Рекомендованные действия:
-
Проверьте логи: Посмотрите логи вашего Alexa Skill, чтобы убедиться, что Discovery запросы и ответы обрабатываются корректно. Это поможет выявить, не возникают ли ошибки во время обработки.
-
Измените свойства: Измените значения для
proactivelyReported
иretrievable
наtrue
и протестируйте Discovery заново. Это зачастую помогает обнаружить устройства:{ "proactivelyReported": true, "retrievable": true }
-
Используйте тестовые устройства: Проверьте корректность работы с тестовыми устройствами в Developer Console, чтобы убедиться, что они правильно отображаются.
-
Обратитесь в поддержку: Если после всех проверок все еще возникают проблемы, обратитесь в техническую поддержку Alexa, предоставив им ваш JSON и описание вашей проблемы.
Заключение:
Добавление новых интерфейсов, таких как RangeController, может вызвать некоторые проблемы совместимости. Важно убедиться, что все настройки соответствуют требованиям Alexa, и что ваше устройство правильно обрабатывает состояния и команды. Всегда проверяйте логи и тестируйте интерфейсы по отдельности для лучшего понимания возможных ошибок.