Термостат не обнаруживается приложением Alexa при добавлении интерфейса контроллера диапазона.

Вопрос или проблема

Я разработал навык для 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, это может быть вызвано несколькими факторами. Давайте подробно рассмотрим, что может быть не так, и предложим решение.

Возможные причины проблемы:

  1. Ошибки в формате Discovery Response: Убедитесь, что ваш JSON в Discovery Response соответствует требованиям, указанным в документации Alexa. Например, убедитесь, что все необходимые поля заполнены, и значения соответствуют ожидаемым типам данных.

  2. Конфликт интерфейсов: Вы добавили интерфейс RangeController к устройству, которое уже имеет другие интерфейсы. Убедитесь, что все интерфейсы совместимы между собой.

  3. Отсутствие свойств "proactivelyReported" и "retrievable": В вашем JSON указано, что оба поля установлены в false для нескольких интерфейсов. Попробуйте установить proactivelyReported в true, чтобы ваше устройство могло отправлять обновления состояния. Поле retrievable в некоторых случаях также должно быть true, чтобы Alexa могла запрашивать информацию о состоянии.

  4. Версия интерфейса: Убедитесь, что вы используете актуальные версии всех интерфейсов, согласно спецификации.

  5. Валидация интерфейсов: Попробуйте протестировать работу вашего устройства с помощью интерфейсов Alexa.ThermostatController и Alexa.RangeController по отдельности, чтобы удостовериться, что они корректно обрабатываются и отображаются.

Рекомендованные действия:

  • Проверьте логи: Посмотрите логи вашего Alexa Skill, чтобы убедиться, что Discovery запросы и ответы обрабатываются корректно. Это поможет выявить, не возникают ли ошибки во время обработки.

  • Измените свойства: Измените значения для proactivelyReported и retrievable на true и протестируйте Discovery заново. Это зачастую помогает обнаружить устройства:

    {
        "proactivelyReported": true,
        "retrievable": true
    }
  • Используйте тестовые устройства: Проверьте корректность работы с тестовыми устройствами в Developer Console, чтобы убедиться, что они правильно отображаются.

  • Обратитесь в поддержку: Если после всех проверок все еще возникают проблемы, обратитесь в техническую поддержку Alexa, предоставив им ваш JSON и описание вашей проблемы.

Заключение:

Добавление новых интерфейсов, таких как RangeController, может вызвать некоторые проблемы совместимости. Важно убедиться, что все настройки соответствуют требованиям Alexa, и что ваше устройство правильно обрабатывает состояния и команды. Всегда проверяйте логи и тестируйте интерфейсы по отдельности для лучшего понимания возможных ошибок.

Оцените материал
Добавить комментарий

Капча загружается...