Подключение своих DIY устройств к умному дому СБЕР
В этой статье я расскажу, как превратить практически любой одноплатный ARM компьютер в ХАБ управления умным домом от СБЕР и управлять своими устройствами на базе Arduino, ESP8266/ESP32 и множеством других через MQTT.
"Умной дом" от СБЕРа менее популярен, в сравнении с ЯНДЕКСОМ, однако, часто можно купить умную колонку по большой скидке и использовать её для управления своими приборами. Вот на одной из распродаж я и стал обладателем SberBoom.
Ранее я купил несколько "Умных розеток", чтобы на время ремонта, когда ещё не работали выключатели и все мои планируемые примочки, управлять светом удаленно. Но теперь, когда ремонт близится к завершению (по крайней мере, я так надеюсь), мне хочется управлять своими поделками при помощи голоса.
У меня есть небольшой опыт работы с API Алисы, и теперь пришло время ознакомиться с тем, что предлагает DIYщикам СБЕР. После прочтения документации стало ясно, что дело это не сложное, нам предлагают управлять своими устройствами через приложение (sber-iot-agent), установленное на популярном в России контроллере Wiren Board. Если вы только планируете выбирать себе сервер для управления "Умным Домом", то можете присмотреться к данному контроллеру. Однако, я считаю его достаточно дорогим для бытового применения, особенно если вы "самоделкин". Для примера, я возьму старенький одноплатник Orange Pi Zero, ещё первой ревизии. Но тем не менее, его мощности вполне хватит на всё. Приступим.
Первым делом, я установил Armbian. По установке есть много инструкций в сети, копипастить не буду. Следом нужно поставить Node Red, весь процесс также отлично описан на сайте разработчика. Затем накатим Mosquitto, он будет внутренним сервером MQTT, который будет управлять моими устройствами. Пакет имеется в репозитории, поэтому просто
Далее нужно немного подредактировать файл конфигурации:
У меня он выглядит так:
pid_file /run/mosquitto/mosquitto.pid listener 1883 allow_anonymous true log_dest file /var/log/mosquitto/mosquitto.log include_dir /etc/mosquitto/conf.d
Следующий шаг - установка агента. У меня не получилось внести ключ в репозиторий, поэтому я установил все пакеты вручную. Сначала нужно скачать следующие пакеты (актуальные версии на 10.09.24):
wget https://nexus.iot.sberdevices.ru/repository/wirenboard/pool/s/salute-security/salute-security_0.0.1_armhf.deb wget https://nexus.iot.sberdevices.ru/repository/wirenboard/pool/s/salute-configurator/salute-configurator_0.2.4_armhf.deb wget https://nexus.iot.sberdevices.ru/repository/wirenboard/pool/s/sberdevices-iot-agent/sberdevices-iot-agent_1.9.27_armhf.deb
И затем их установить:
sudo dpkg -i salute-security_0.0.1_armhf.deb sudo dpkg -i salute-configurator_0.2.4_armhf.deb sudo dpkg -i sberdevices-iot-agent_1.9.27_armhf.deb
После установки идём по ссылке http://ВАШ_IP:8090 ,и вы должны увидеть следующее:
Отлично! Работает! Далее нужно зарегистрироваться в кабинете разработчика СБЕР, идем по ссылке.
Вам необходимо войти через СБЕР ID по номеру телефона, чтобы иметь возможность работать с УД.
После регистрации вы попадаете в своё "личное пространство", где необходимо нажать кнопку "создать проект"
И выбрать пункт SmartHome MQTT DIY
Введите название проекта, и вы перейдёте на страницу настроек данных для подключения. Придумайте название контроллеру и нажмите кнопку "получить данные для подключения"
Программа сгенерирует логин, пароль и покажет адрес MQTT сервера. Возвращаемся к sber-iot-agent и заносим полученные данные. Для этого нужно нажать на кнопку "Настроить" в верхней части экрана и заполнить соответствующие поля.
Затем нажмите "Подключиться"
Если Статус подключения изменился на "В сети", то вы всё сделали правильно! Иначе, проверьте всё ещё раз, внимательно.
Теперь пару замечаний. Поскольку это всё написано для WirenBoard, мы должны следовать их формату MQTT топиков. Они должны выглядеть примерно вот так:
/devices/устройство/controls/топик
и ещё один момент - текущая версия программы агента предлагает выбирать топики для подписки выпадающим списком. Она самостоятельно подписывается на все топики, которые отвечают вышеуказанному формату, т.е. до начала добавления устройств все они уже должны быть опубликованы. Поэтому загружаем Node Red. Кто не знал или забыл, делаем так http://ВАШ_IP:1880
Я создам тестовый поток с нодами для демонстрации работоспособности.
Вот ссылка на скачивание примера ноды.
После развертывания (Deploy) нажмите кнопку Старт, этим мы опубликуем все наши необходимые MQTT топики.
- devices
- termo
- controls
- status = 1
- value = 250
- controls
- termo
- devices
- relay
- controls
- status = 1
- state = 1
- cmd = 1
- controls
- relay
Следующим шагом мы создадим наши устройства. Всего СБЕР предлагает нам на данный момент следующие варианты.
Для примера, как принято, я сделаю датчик температуры и, например, реле. Для этого нажмите кнопку "Добавить устройство" на вкладке "Устройства" в программе агенте. Появится страница с полями для заполнения. Введите название датчика и выберите Категорию как показано ниже.
Переходим на вкладку "Функции", раскрываем online и в поле "Объект статуса" выбираем соответствующий топик. Как видно, в выпадающем списке у нас имеются все опубликованные топики.
Затем в поле добавления функции выбираем temperature
И по аналогии заполняем поле топика.
Нажимаем кнопку "Сохранить" и приступаем к добавлению реле.
Не забываем сохранять. Второй этап готов. Как видим, процесс добавления довольно прост. Вы можете добавлять различные функции, которые имеются у ваших устройств, выбирая подходящие из имеющегося набора "способностей" каждого устройства, реализованным в УД от СБЕРа.
Далее, скачиваем приложение Салют на телефон и регистрируемся в нём.
Нажимаете +, Добавить устройства -> Других производителей -> Уже подключены -> Имя вашего HUB
И обновляете список устройств.
Должно добавиться два новых устройства и на главном экране приложения, вы должны увидеть в приложении что-то вроде этого.
Наш датчик температуры и реле отобразились в приложении.
Теперь при нажатии на экране или голосовых командах, вы сможете управлять реле и запрашивать температуру термодатчика, все команды проходят через Node-Red, где можно более тонко настроить взаимодействие устройств. При включении и выключении реле будут приходить данные по настроенным топикам.
Нажмите на кнопки в Node Red и вы увидите, что будут меняться данные в приложении Салют, а также состояние реле.
Таким образом, мы настроили своеобразный мост между приложением Салют и сервером MQTT на одноплатном компьютере, и теперь вы можете подключить любое своё устройство через MQTT.
На этом пока всё! Экспериментируйте, дерзайте, создавайте!