Найти в Дзене

SLS. WQTT. Алиса. Настройка интеграции

Оглавление

Всем здрасте!

Для голосового управления устройствами SLS я пробовал навык YaHa, когда еще пользовался Home Assistant. Затем освоил навык Домовенок Кузя. Но он мне тоже по ряду причин не подошел. Так родилась идея создания собственного навыка, который я разработал еще в начале 2023 года. Им я пользуюсь по сей день. После публикации статьи о его разработке, один из пользователей отметил, что пользуется навыком WQTT.RU. Я попробовал этот навык в работе. Он мне понравился, что я даже порываюсь иногда перейти на него. Вот об этом и поговорим.

Расскажу как настроить интеграцию SLS с Яндекс Алисой посредством сервиса WQTT.RU. Покажу как добавить не только обычные устройства и датчики, но и виртуальные устройства с использованием Объектов SLS.

Платформа WQTT.RU - это облачная MQTT-платформа, состоящая из MQTT-брокера (Mosquitto) и панели управления. С помощью панели управления можно управлять брокером и подключенными устройствами. Mosquitto реализует транспортный протокол MQ Telemetry Transport (MQTT), который предоставляет облегченные методы обмена сообщениями с использованием модели издатель - подписчик.

WQTT. Запуск брокера

Регистрируемся на сервисе. Email адрес должен быть реальным.

Заполнение формы регистрации
Заполнение формы регистрации

Активируем аккаунт кодом из письма

Письмо с данными для активации
Письмо с данными для активации

После успешной регистрации, на сервисе создается Ваш экземпляр MQTT брокера и в меню MQTT - Брокер можно увидеть реквизиты подключения к нему.

Управление брокером
Управление брокером

Также, здесь есть кнопки управления брокером, позволяющие перезагрузить его и сбросить.

Здесь же, в меню MQTT, имеется удобный инструмент WebSocket клиент, позволяющий мониторить сообщения от MQTT клиента и отправлять сообщения в выбранные топики.

WebSocket клиент
WebSocket клиент

SLS. Настройка подключения к брокеру

В меню Settings - Link - MQTT Setup шлюза SLS настраиваем подключение к брокеру

Настройка подключения к брокеру в SLS
Настройка подключения к брокеру в SLS

При правильной настройке, в меню MQTT - WebSocket клиент сервиса WQTT.RU уже можно наблюдать MQTT сообщения от шлюза SLS

Сообщения MQTT от шлюза SLS
Сообщения MQTT от шлюза SLS

WQTT. Настройка устройств

С устройствами - датчикам, как правило, проблем не возникает. Надо только понять, как парсить JSON для извлечения данных сенсоров.

Например, получим топик состояния датчика открытия. Имеем такой JSON:

{"battery":92,"contact":true,"last_seen":1710826432,"linkquality":127,"trSeqNum":195,"voltage":2.98,"friendly_name":"mag_tambur","model_name":"lumi.sensor_magnet"}

Нам нужен топик состояния contact. Согласно документации сервиса, топик будет такой:

ZigbeeSLS/0x00158D00039272A5$.contact

Здесь:
ZigbeeSLS - корневой топик SLS на брокере (System prefix topic)
0x00158D00039272A5 - физический адрес устройства (ieeeAddr)
$. - указатель того, что значение нужно взять из ключа JSON
contact - название состояния, значение которого необходимо получить

Таким образом формируется топик состояния.

Датчик открытия

Добавим датчик открытия в сервис. Идем в меню Умный дом - Настройки и нажимаем кнопку Добавить устройство. Из огромного списка поддерживаемых устройств, выбираем Датчик

-8

Заполняем название устройства и комнату, в которой оно находится. При интеграции с Яндекс названия устройств и комнат "поедут в Алису".

-9

Сохраняем, продолжаем.

-10

Добавляем датчик, по соответствующей кнопке. Поскольку датчик открытия - бинарный, выбираем тип данных датчика Event

-11

Тип датчика Открытие и топик, который мы получили ранее

-12

Получаем такой датчик

-13

И, он же в меню Умный дом - Dashboard он выглядит так

-14

И, так он пробрасывается в Алису

-15

Лампа

Теперь рассмотрим добавление устройства посложнее - лампа с регулировкой яркости, цвета и цветовой температуры. В SLS её состояния такие:

-16

Нас интересуют:
-
state - включение, выключение
-
brightness - управление яркостью
-
color - управление цветом
-
color_temp - управление цветовой температурой

Топики состояния мы уже умеем формировать:
ZigbeeSLS/0xA4C138FD68EAA226$.state
ZigbeeSLS/0xA4C138FD68EAA226$.brightness
ZigbeeSLS/0xA4C138FD68EAA226$.color
ZigbeeSLS/0xA4C138FD68EAA226$.color_temp

Разберемся с топиками управления. Честно говоря, я уже не помню где я нарыл эту информацию. Самое простое - это посмотреть как устройство управляет, например, Home Assistant. Но, у меня его нет. Полагаю, все устройства управляются одинаково и топик управления выглядит так

ZigbeeSLS/0xA4C138FD68EAA226/set/brightness

здесь:
ZigbeeSLS/0xA4C138FD68EAA226 -
топик устройства
set - команда на запись значения
brightness - состояние, в которое необходимо записать значение

Также, отправляемое значение можно слегка отформатировать. Например нам, для управления цветом, нужно отдать значение в JSON {"hex": "#ff0a99"}, а WQTT его отправляет как #ff0a99. Для форматирования в JSON используется такая конструкция:

ZigbeeSLS/0xA4C138FD68EAA226/set/color&&{"hex": "%VALUE%"}

Т.е. к топику дописываем конструкцию &&{"hex": "%VALUE%"}, где:
&& -
указатель на строку форматирования или если угодно разделитель
%VALUE% - переменная, в которую будет подставлено передаваемое значение.

Итак, добавляем нашу лампочку - всё тоже, что и с датчиком. Далее добавляем органы управления

Питание

Топики:
ZigbeeSLS/0xA4C138FD68EAA226/set/state - управление
ZigbeeSLS/0xA4C138FD68EAA226$.state -
состояние

Значения включить/выключить - ON/OFF

-17

Яркость

Топики:
ZigbeeSLS/0xA4C138FD68EAA226$.brightness
ZigbeeSLS/0xA4C138FD68EAA226/set/brightness

Значения. Поскольку в SLS значения яркости в диапазоне 0-255 единиц, а в Алисе 0-100%, добавим множитель 2,55.

-18

Цвет

Управлять будем методом НЕХ, поскольку остальные форматы не подходят для SLS.

Топики:
ZigbeeSLS/0xA4C138FD68EAA226$.color
ZigbeeSLS/0xA4C138FD68EAA226/set/color&&{"hex": "%VALUE%"}

-19

Температура

Температура пока отдается в Кельвинах. Для совместимости с SLS её необходимо передавать в меридах, т.е. (1000000 / Kelvin). Также, WQTT не поддерживает одновременную работу с цветом и температурой. Об этом сообщил разработчику. Так что пока управлять можно только цветом.

Топики:
ZigbeeSLS/0xA4C138FD68EAA226$.color_temp
ZigbeeSLS/0xA4C138FD68EAA226/set/color_temp

-20

Получаем такое устройство

-21
-22

И, так лампочка выглядит в Алисе

-23

А так ее пробрасывает мой навык

-24

Обратите внимание, что можно управлять и цветом и температурой.

Для управления цветом и температурой придется костылизировать интеграцию. Об этом в другой раз. А пока посмотрим, как добавить виртуальный датчик.

Виртуальный датчик

Предположим, у нас есть устройство, которое формирует объект с погодными данными. Это, кстати может быть и не устройство, а скрипт, который получает погодные данные с сервиса openweather:

-25

Создадим устройство

-26

и добавим в него датчики

Получим такое устройство

-28
-29

И, так оно пробрасывается в Алису:

-30

WQTT. Интеграция с Алисой

Для проброса устройств WQTT в Алису, нужно в приложении Умный дом Яндекс добавить навык WQTT. При его добавлении Вы увидите такую инструкцию, следуя которой устройства WQTT появятся в приложении

-31

TODO: Здесь будет видео с обзором сервиса WQTT и настройкой интеграции

----------
Листинги скриптов
Поддержать канал
Поболтать