Это статья 7 из цикла статей по установке и настройке Home Assistant.
- 1. Умный дом. Выбор.
- 2. Home Assistant. Выбор железа.
- 3. Установка Armbian на Orange Pi Zero Plus2
- 4. Home Assistant. Установка в docker на Orange Pi Zero +2 H5. И почему это плохо.
- 5. Home Assistant. Установка на Orange Pi Zero +2 H5
- 6. Home Assistant. Настройка VS Code. Темы. Первый сценарий.
- 7. Home Assistant. Подключение электрокарниза по радиоканалу.
- 8. Home Assistant. Подключение электрокарнизов по RS485.
Это текстовая версия для видео:
Сегодня мы подключим электрокарниз к системе умного дома Home Assistant. Это позволит нам управлять шторами с любого устройства, которое можно подключить к локальной сети и на котором можно запустить браузер — смартфонах и планшетах на Android, iOS, Windows, компьютерах с операционными системами Windows, Mac OS и Linux, TV-box’ах и smart-TV. Даже с кнопочного телефона, если захочется. Можно будет добавить сценарии для автоматического управления шторами. Например, закрывать шторы при включении света в комнате.
Подключать будем электрокарниз Akko AM82TV-1.2/14 по радиоканалу используя радиомодуль RF-Blinds.
Электрокарнизы Somfy подключаются точно так же. Сами команды для Somfy другие, но в целом отличия небольшие и код для электрокарнизов Somfy также будет показан.
Радиомодуль RF-Blinds поддерживает как радиопротокол Dooya (Akko), так и Somfy. У вас есть выбор оборудование какого производителя использовать. Можно не ограничиваться только одним производителем и построить гибридную систему.
Показан простой и прямолинейный вариант подключения для установки Home Assistant в виртуальное окружение. В конце статьи даны рекомендации более продвинутого и универсального варианта, который подходит для Home Assistant установленного, как в виртуальное окружение, так и в docker. Второй вариант будет особенно актуален для тех, кто использует Hassio / hassos на raspberry Pi.
Подключаемся к Orange Pi:
ssh homeassistant@192.168.10.20
Посмотрим на устройства, которые находятся у нас в каталоге /dev:
ls /dev
Теперь подключим RF-Blinds к Orange Pi через один из портов USB и снова выполним команду:
ls /dev
У нас появился новый каталог serial и новое устройство ttyUSB0:
Посмотрим настройки для ttyUSB0 выполнив команду:
stty -F /dev/ttyUSB0
Ответ:
stty: /dev/ttyUSB0: Permission denied
Нет доступа. Посмотрим на права доступа к ttyUSB0:
ls -l /dev/ttyU*
Ответ:
crw-rw—- 1 root dialout 188, 0 мая 15 10:29 /dev/ttyUSB0
Видим, что доступ к устройству есть у пользователя root и пользователей, входящих в группу dialout.
Посмотрим на группы, в которые входит текущий пользователь:
groups
Ответ:
homeassistant
Видим, что сейчас пользователь входит только в одну группу — homeassistant. Для доступа к ttyUSB0 нужно, чтобы пользователь входил в группу dialout.
Вносить изменения в права пользователей может только пользователь с правами администратора. У пользователя homeassistant таких прав нет, поэтому переключаемся на пользователя root (или на любого другого, с правами суперпользователя):
su —
И добавляем пользователя homeassistant в группу dialout:
adduser homeassistant dialout
Ответ:
Adding user `homeassistant’ to group `dialout’ …
Adding user homeassistant to group dialout
Done.
Выходим из суперпользователя:
exit
Чтобы изменения вступили в силу нам нужно перелогиниться:
exit
ssh homeassistant@192.168.10.20
Убеждаемся в том, что не сделали ошибки при добавлении пользователя в группу:
groups
Ответ:
homeassistant dialout
Смотрим настройки консоли для ttyUSB0:
stty -F /dev/ttyUSB0
Ответ:
speed 9600 baud; line = 0;
-brkint -imaxbel
Доступ есть, но скорость обмена нам нужна 115 200. Устанавливаем:
stty 115200 -F /dev/ttyUSB0
и ещё раз проверяем:
stty -F /dev/ttyUSB0
Ответ:
speed 115200 baud; line = 0;
-brkint -imaxbel
Я заранее выполнил привязку радиомодуля Rf-Blinds и электрокарниза Akko AM82TV-1.2/14 и не описываю здесь эту процедуру. Как выполнить сопряжение можно посмотреть в документации на модуль Rf-Blinds.
Убеждаемся в работоспособности выполнив команды:
echo «dy_open ,1» > /dev/ttyUSB0 — включить мотор электрокарниза
echo «dy_stop ,1» > /dev/ttyUSB0 — остановить.
Мы почти закончили. Нам осталось только добавить несколько строк в конфигурационный файл home assistant. Для управления электрокарнизом можно использовать разные компоненты home assistant. Я выбрал компонент Command Line Cover.
В файл configuration.yaml добавим:
# Added for Rf_Blinds (protocol Dooya):
cover:
- platform: command_line
covers:
am82tv:
command_open: echo "dy_open ,1" > /dev/ttyUSB0
command_close: echo "dy_close ,1" > /dev/ttyUSB0
command_stop: echo "dy_stop ,1" > /dev/ttyUSB0
Для электрокарниза Somfy команды другие и в configuration.yaml добавим:
# Added for Rf_Blinds (protocol Somfy):
cover:
- platform: command_line
covers:
movelete35:
command_open: echo "smf_up 1,12" > /dev/ttyUSB0
command_close: echo "smf_down 1,12" > /dev/ttyUSB0
command_stop: echo "smf_my 1" > /dev/ttyUSB0
Открываем в браузере страницу с home assistant. Переходим на вкладку Настройки -> Общие. Проверяйте Ваш файл конфигурации и управляйте сервером.
Проверяем конфигурацию. Если есть ошибки — устраняем. Затем перезапускаем сервер.
После перезагрузки на вкладке “Общие” видим появление нового элемента — “Шторы”:
Убеждаемся в том, что всё работает.
Теперь можно управлять шторами самыми разными способами. Можно с телефона, можно кнопками и пультами подключив их к home assistant. Можно писать сценарии и управлять шторами по какому-либо событию. Например автоматически закрывать шторы при включении света. Возможно самый эффектный способ — это управление голосом.
Из трёх наиболее популярных голосовых систем управления — Amazon Alexa, Google Home и Алиса от Яндекса я выбрал Алису рассчитывая на наиболее полную поддержку русского языка.
Подробно описывать как я это сделал сейчас не буду — не уверен, что мой вариант оптимален и подойдёт для большинства случаев. Обозначу только шаги, обязательные условия, которые нужно выполнить, чтобы всё заработало.
Нужно обеспечить доступ к home assistant из интернета. При этом соединение должно быть защищённым т.е. вам понадобится ssl сертификат, а он выдаётся на доменное имя.
Далее нужен интерфейс между home assistant и Умным домом Яндекса. Для home assistant есть пользовательский компонент, можно воспользоваться им, но по-функционалу вы получите более широкие возможности, если настроить всё через mqtt. Система получится гораздо более гибкой и универсальной. Используя mqtt можно подключить любую систему Умного дома, не обязательно home assistant.
И конечно вам нужно будет устройство с Алисой. Это может быть Яндекс.Станция, Яндекс.Станция мини или просто приложение Яндекс для телефона.
Как это выглядит в итоге, можно посмотреть на видео:
В варианте установки, который описан в статье, вам нужен доступ из Home Assistant к последовательному порту. Если Home Assistant установлен в docker, то нужно будет настроить доступ из контейнера к железу системы. Это не сложно. В сети есть хорошие описания того, как это сделать. Здесь мы оставим ссылку ещё на один, универсальный вариант. В операционной системе запускается сервер, который сам найдет подключенное устройство rf-blinds и предоставит к нему доступ по сети. В этом случае вы получаете доступ к rf-blinds из docker так же просто, без дополнительных настроек, как и в случае с установкой Home Assistant в виртуальное окружение. И даже больше. Вы сможете отправлять команды по сети с любого устройства, через сетевое подключение. В этом случае вам даже не обязательно подключать rf-blinds к тому же компьютеру, на котором у вас установлен умный дом. Будет достаточно, чтобы они могли обмениваться сообщениями через сеть.