Предыстория
Несколько лет назад в нашем доме обнесли территорию забором и сделали ворота для въезда. Изначально всё работало на пультах, но в последствии добавили возможность открыть вороа по звонку на номер сим карты, установленной в системе открывания ворот. В белый список для данной сим карты управляющая компания по заявке от жителя добавляет номера их телефонов и посторонний человек, зная номер симки не может попасть на закрытую парковку двора.
Собственно, сама боль, которую решаем
Находясь за рулём
автомобиля перед въездом на парковку неудобно брать в руки телефон, искать нужный
номер для открытия ворот. Хочется сказать: «Алиса, открой ворота в арке» и
ворота откроются.
Как это решил я:
Для решения поставленной задачи нам нужно научить Home Assistant звонить. Решений в интернете я не нашёл, но в голову пришла идея воспользоваться старым добрым 3G модемом Huawei E1550, который без особых усилий можно превратить в устройство способное совершать вызовы.
Активация голосовых вызовов в модеме
В модемах Huawei по умолчанию заблокирована такая функцию, как голосовые вызовы (ибо модем нужен только для подключения к интернету, но производители не убирают плагин для голосовых вызовов из ПО модема, а просто блокируют саму функцию.
Для владельцев модемов купленных в МТС проблем обычно не
возникает. Обычно, там эта функция разблокирована. Но МТС не единственный
оператор, который продавал данные модемы под своей маркой, а у остальных она
чаще всего заблокирована, и необходимо воспользоваться программой для
разблокировки данной функции. Помимо этого, в процессе вам потребуется узнать
его IMEI и код разблокировки с помощью программы HUAWEI_Calculator.exe.
Данную инструкцию я тут публиковать не буду, но её легко найти в интернете.
Для работы нам также потребуется программа Huawei Modem Terminal, с помощью
которой можно отправлять AT команды в модем.
AT-команды — набор команд, разработанных в
1977 году компанией Hayes. Набор команд состоит из серий коротких текстовых
строк, которые дают возможность управлять модемом, набирать номера, контролировать
параметры подключения и т.д. Если ваш модем не определился в системе, то
вспомните про драйвер, если они автоматически не определились в системе, установите их.
В программе Huawei Modem Terminal нам нужно выбрать HUAWEI Mobile Connect – 3G PC UI Interface на нужном COM порту и нажать кнопку Connect.
Если IMEI нет на корпусе модема, то чтобы узнать IMEI нужно ввести команду:
AT+CGSN
Для проверки активации голосовых функций потребуется команда:
AT^CVOICE=?
Где в ответе нулевое значение указывает на активный режим.
После процедур разблокировки, описанных выше, нам понадобиться отключить CD-ROM и SD-карту модема, для правильной работы USB модема на хосте с помощью AT-команды:
AT^U2DIAG=0
После этого смело подключайте USB модем к хост-компьютеру (Debian, Raspberry Pi OS и др. linux) и найдите его командой:
lsusb
Попробуйте из интерфейса консоли хост-компьютера ввести команду:
echo -ne "ATD+79991234567;\r\n" > /dev/ttyUSB1
+79991234567 - номер телефона
dev/ttyUSB1 - порт хоста модема, который вы увидите по выводу команды:
dmesg | grep usb
Если звонок состоялся, то Бинго! Вы на верном пути. Если же звонка не было, проверьте всё ли вы правильно сделали на предыдущих этапах.
Далее мы идём в Home Assistants и воспользовавшись HACS устанавливаем сервис SSHCommand, который позволяет запускать SSH-команды на удаленном хосте.
За SSHCommand говорим большое спасибо AlexxIT.
После перезагружаем Home Assistants, идём в script и пишем простой скрипт для осуществления вызова команды на звонок через удалённый хост.
vorota_1:
alias: vorota_1
sequence:
- service: ssh_command.exec_command
data:
host: XX.XX.XX.XX
user: username
pass: password
command: echo -ne "ATD+79991234567;\r\n" > /dev/ttyUSB1
XX.XX.XX.XX – ip адресс хоста
username – логин на хосте
password – пароль на удалённом хосте
+79991234567 – номер который нужно набрать
/dev/ttyUSB1 – устройство на удалённом хосте с которого осуществляется набор номера
После пробуем вызвать скрипт vorota_1, убеждаемся что всё работает и добавляем при необходимости кнопку в интерфейс Home Assistants.
Далее дело за малым. С помощью интеграции Yandex Smart Home осуществляем сопряжение Home Assistants с Яндекс Умный дом и пробрасываем наш скрипт в устройства Яндекса.
Если вы справились, то примите мои поздравления. Ответить на все ваши вопросы я не смогу, так как нет времени, но если не справитесь то пробуйте найти решение сами, я вас верю.
Заключение
Задаём в Яндексе нужные настройки (имя, помещение и т.д.) и тестируем выполнение команд уже из Алисы.
Для данного способа подойдут и другие 3G модемы Huawei, например Е3131, но команды и способы разблокировки голосовых функций в них могут отличаться. Как сделать это на вашем модеме я не знаю, ищите информацию сами, или просто купите E1550 на всем известной барахолке за 500 рублей.
Сим карту с бесплатным тарифом можно получить у множества операторов, это тоже не предмет дискуссий.
От себя лично желаю вам удачи и надеюсь, что данный кейс вам поможет решить вашу задачу, которая не обязательна должна быть связана с открытием ворот. К примеру этот же модем может отправлять SMS используя иную команду, что может пригодиться если вам нужны оповещения о пропадании интернета или ваш сервер установлен в месте без доступа к интернету.
Просто сказать Ок гугл позвони шлагбаум ? Не судьба ?
Ещё чатджипити прикрутите
Спасибо за отличную статью!
Из линуха звонить научил модем. А вот с HA OS ни в какую( Команду отправляю и тишина...
Что может быть не так?