Интеграция контроллера Wiren Board в Дом с Алисой
Описание
Доступно в релизе testing
Дом с Алисой — это облачная платформа и мобильное приложение для управления устройствами умного дома.
Все добавленные устройства будут видны в мобильном приложении, что позволит вам управлять ими удалённо со смартфона, умных колонок с Алисой, Яндекс.Модуля и т.п.
Интеграция доступна только при использовании русского языка в веб-интерфейсе контроллера.
Если пакет не установился на контроллере после обновления, попробуйте обновиться следующим образом:apt update && apt full-upgrade
Архитектура
Интеграция состоит из следующих частей:
- навык и авторизация на серверах Яндекса;
- шлюз между «Умным домом» Яндекса и контроллером Wiren Board;
- клиентская часть, предустановленная на контроллере - пакет wb-mqtt-alice.
- Схема интеграции
wb-mqtt-alice
Это пакет предустановленный на контроллере, который состоит из двух сервисов:
- wb-mqtt-alice-config - конфигуратор устройств;
- wb-mqtt-alice-client - клиент обеспечивающий работу интеграции.
Безопасное соединение
Привязка контроллера и обмен данными между контроллером и нашим сервером-шлюзом происходит по ключу, хранящемся в чипе ATECCx08.
Привязка контроллера
В общем случае контроллер привязывается так:
- В веб-интерфейсе контроллера выберите Интеграции → Яндекс Алиса.
- Нажмите Активировать.Появится предупреждение: Контроллер не привязан. Привяжите контроллер.
- Нажмите Привязать контроллер через Яндекс ID. Если вы не были авторизованы, появится сообщение с просьбой войти в учетную запись, нажмите log in.
- Авторизуйтесь с помощью Яндекс ID.
- При появлении сообщения Сервис ещё не верифицирован нажмите Продолжить.
- На странице входа выберите аккаунт Яндекс ID для привязки контроллера, после этого откроется личный кабинет сервера alice.wirenboard.com.
- Снова откройте в веб-интерфейсе контроллера Интеграции → Яндекс Алиса и нажмите Привязать контроллер через Яндекс ID. Появится сообщение об успешной привязке контроллера.
- Для перехода на страницу статуса привязки нажмите Back to Dashboard. Обновление статуса может занять до 30 с. Если этого не произошло, то вернитесь в интерфейс контроллера, обновите страницу и Активируйте интеграцию еще раз. Контроллер также не перейдет в статус онлайн, если у указанного пользователя не добавлен навык.
- После подключения контроллера к серверу можно переходить к настройке устройств.
- Привязка контроллера Wiren Board к учётке Яндекса
Добавление навыка
- В мобильном приложении "Дом с Алисой" войдите под своим аккаунтом.
- Перейдите в "Устройства умного дома".
- Найдите и добавьте навык "Wiren Board".
- Завершите добавление навыка.
Отвязка контроллера
Для отвязки контроллера перейдите на страницу проверки статуса или личного кабинета сервера alice.wirenboard.com и нажмите на красный крестик рядом с серийным номером отвязываемого контроллера.
- Отвязывание контроллера Wiren Board от интеграции
Или введите в терминале самого контроллера команду:
wb-mqtt-alice unlink-controller
При корректном выполнении команды в терминале можно наблюдать такие сообщения:
Current link status: linked
Unlink action result: successful
Отключение интеграции
Для отключения интеграции переведите переключатель Активировать в положение выключено
Настройка устройств
В разделе Интеграции → Яндекс Алиса можно перейти к конфигуратору устройств и настраивать устройства. Реализована возможность добавления комнат и устройств.
Доступные умения:
on_offcolor_setting(цвет (rgb) или температура цвета)range
Доступные свойства:
floatevent
Особенности настройки устройств:
- Если добавленное устройство уже прокинуто в приложении Дом с Алисой, то его переименование в нашем конфигураторе не приведет к изменениям в приложении. Это особенность реализации со стороны Яндекса.
- В качестве MQTT-топика нельзя использовать топик с типом pushbutton, т.к. они без флага retained.
Добавление интеграции в Яндексе
- В приложении Дом с Алисой в правом верхнем углу нажать + и выбрать Устройство умного дома.
- В поле поиска найти навык Wiren Board. Выбрать его.
- Обновить список устройств.
Удаление интеграции
Если не нужна интеграция с Алисой, то можно ее удалить.
- Отвяжите контроллер. На странице привязанных контроллеров нажмите на красный крестик в плашке нужного контроллера.
- Удалите пакет:
apt purge wb-mqtt-alice
- Запретите автоустановку при обновлении:
apt-mark hold wb-mqtt-alice
Если интеграцию необходимо вернуть, то снимаем блокировку и устанавливаем пакет:
apt-mark unhold wb-mqtt-alice
apt install wb-mqtt-alice
Сервис клиента
Посмотрите и проанализируйте возможные сообщения об ошибках в логах сервиса клиента - wb-mqtt-alice-client
Сервис конфигуратора
Посмотрите и проанализируйте возможные сообщения об ошибках в логах сервиса конфигуратора - wb-mqtt-alice-config
Примечание
Пароль на nginx
Для работы интеграции не используйте пароль на nginx. Для авторизованного доступа в веб-интерфейсу контроллера используйте стандартный метод из документации.
Особенности работы с УДЯ
Умение color_settings
При добавлении умения color_seting, выбора модели управления цветовой температурой и диапазона температур от 2700 до 6500 наблюдается странное поведение в приложении - невозможно выбрать "Холодный белый". Для выбора данной цветовой температуры необходимо нажимать правее самого виджета, т.е. по сути на виджет "Плюса".
- Приложение УДЯ
Cобытия
События (Event) в Умном доме Яндекса — это сигналы от датчиков или устройств (обнаружение движения, открытие двери, нажатие кнопки), указывающие, что их состояние поменялось. Они выступают триггерами в сценариях, запуская автоматические действия без участия пользователя.
Приложение УДЯ фиксирует историю срабатываний датчика, но не отображает его статус в реальном времени. Алиса может сообщить какое событие с датчиком было последним.
Для полноценной работы большинству событий требуется несколько mqtt топиков, в этом случае каждому топику соответствует определенное значение события. Например, для обработки события button нужно 3 топика, которые соответствуют значениям click — одиночное нажатие, double_click — двойное нажатие, long_press — долгое нажатие. Но есть события, которым это не обязательно, они могут менять свое значение на основе данных одного топика, это: open, motion и water_leak.
| Событие | Описание |
|---|---|
| vibration | Физическое воздействие (tilt — переворачивание, fall — падение, vibration — вибрация) |
| open | Открытие/Закрытие дверей, окон и др. (opened — открыто, closed — закрыто) |
| button | Нажатие кнопки (click — одиночное нажатие, double_click — двойное нажатие, long_press — долгое нажатие) |
| motion | Движение в области действия датчика (detected — обнаружено, not_detected — не обнаружено) |
| smoke | Дым в помещении (detected — обнаружено, not_detected — не обнаружено, high — высокий уровень) |
| gas | Газ в помещении (detected — обнаружено, not_detected — не обнаружено, high — высокий уровень) |
| battery_level | Заряд батареи (low — низкий, normal — нормальный) |
| food_level | Уровень корма (empty — пустой, low — низкий, normal — нормальный) |
| water_level | Уровень воды (empty — пустой, low — низкий, normal — нормальный) |
| water_leak | Протечка воды (dry — нет протечки, leak - протечка) |
Особенности реализации события open
Событие open имеет два значения: Открыто и Закрыто, использовать его можно двумя способами:
- один датчик, который передает в mqtt топик состояние контактов замкнуто/разомкнуто. Значения true, on, любое число > 0 — активируют выбранное значение события (например, Открыто), значения false, off, 0 — активируют противоположное значение события (например, Закрыто):
- два датчика, которые передают состояние контактов в два топика. Можно использовать, например, для автоматизации откатных ворот, где датчики фиксируют крайние положения. Оба датчика при сработке записывают в свой топик значения true, on или любое число больше 0. Событие Открыто или Закрыто активируется при сработке соответствующего датчика. При этом изменение значения топика с true на false у обоих датчиков игнорируется.
Поиск и устранение неисправностей
Контроллер может соединиться с сервером, только если выполнены три условия:
- включена интеграция (состояние флага Активировать установлено во включенное состояние);
- контроллер привязан к нашему серверу Wiren Board;
- пользователь уже имеет связанный навык WirenBoard в приложении УДЯ.
Проверка сервиса конфигуратора
$ systemctl status wb-mqtt-alice-config
Ожидаемый ответ:
Active: active (running) since...
Если сервис не активен, запустите его командой:
$ systemctl start wb-mqtt-alice-config
Проверка сервиса клиента
$ systemctl status wb-mqtt-alice-client
Ожидаемый ответ:
Active: active (running) since...
Если сервис не активен, запустите его командой:
$ systemctl start wb-mqtt-alice-client
Проверка файла /etc/wb-mqtt-alice-client.conf
Убедитесь, что в поле client_enabled установлено значение True
Проверка подключения к интернету
ping 8.8.8.8 -c 4
Ожидаются: успешные ответы. Если нет — проверьте подключение к интернету.
Проверка доступности сервера
curl -v http://localhost:8042/socket.io/?EIO=4
ответ:
\* Connected to localhost (127.0.0.1) port 8042 (#0)
...
\* Connection #0 to host localhost left intact
0{"sid":"x0WN3fm5TAGTls0_AAcF","upgrades":["websocket"],"pingTimeout":30000,"pingInterval":60000}
Если ответа нет, перезагрузите контроллер.
Просмотр Системного журнала
Часто о сути какой-либо проблемы можно узнать из логов соответствующих сервисов. В веб-интерфейсе логи доступны с помощью инструмента «Системный журнал».
Известные неисправности
Ошибки/особенности, обнаруженные при использовании интеграции.
Альтернативные варианты
Кроме нашей интеграции вы можете использовать сторонние решения:
- Home Assistant,
- Node RED,
- SprutHub,
- yandex2mqtt — локальное решение без промежуточных серверов.