Статья

Открытие шлагбаума по звонку из Home Assistants

Предыстория

Несколько лет назад в нашем доме обнесли территорию забором и сделали ворота для въезда. Изначально всё работало на пультах, но в последствии добавили возможность открыть вороа по звонку на номер сим карты, установленной в системе открывания ворот. В белый список для данной сим карты управляющая компания по заявке от жителя добавляет номера их телефонов и посторонний человек, зная номер симки не может попасть на закрытую парковку двора.

Собственно, сама боль, которую решаем

Находясь за рулём автомобиля перед въездом на парковку неудобно брать в руки телефон, искать нужный номер для открытия ворот. Хочется сказать: «Алиса, открой ворота в арке» и ворота откроются.

Как это решил я:

Для решения поставленной задачи нам нужно научить 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 нужно ввести команду:

auto
Копировать
 AT+CGSN

Для проверки активации голосовых функций потребуется команда:

auto
Копировать
AT^CVOICE=?

Где в ответе нулевое значение указывает на активный режим.

После процедур разблокировки, описанных выше, нам понадобиться отключить CD-ROM и SD-карту модема, для правильной работы USB модема на хосте с помощью AT-команды:

auto
Копировать
AT^U2DIAG=0

После этого смело подключайте USB модем к хост-компьютеру (Debian, Raspberry Pi OS и др. linux) и найдите его командой:

auto
Копировать
lsusb

Попробуйте из интерфейса консоли хост-компьютера ввести команду:

auto
Копировать
echo -ne "ATD+79991234567;\r\n" > /dev/ttyUSB1
где:

+79991234567 - номер телефона
dev/ttyUSB1 - порт хоста модема, который вы увидите по выводу команды:
auto
Копировать
dmesg | grep usb

Если звонок состоялся, то Бинго! Вы на верном пути. Если же звонка не было, проверьте всё ли вы правильно сделали на предыдущих этапах.

Далее мы идём в Home Assistants и воспользовавшись HACS устанавливаем сервис SSHCommand, который позволяет запускать SSH-команды на удаленном хосте.

За SSHCommand говорим большое спасибо AlexxIT.

После перезагружаем Home Assistants, идём в script и пишем простой скрипт для осуществления вызова команды на звонок через удалённый хост.

auto
Копировать

  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 используя иную команду, что может пригодиться если вам нужны оповещения о пропадании интернета или ваш сервер установлен в месте без доступа к интернету.


У некоторых компаний, особенно в Москве, есть недокументированная функция открытия шлагбаума через Телеграм бота. Дальше автоматизация куда проще. Я по этому поводу даже статью на Хабр писал) https://habr.com/ru/articles/663590/
У меня дома около 3х старых телефонов на андройде валяется, думаю я не один такой...я б через него сделал и таскер или макродройд, или телегу...ну или та же ты приставка
Реализовал такое с помощью виртуальной АТС. Один http запрос к api АТС, и АТС звонит на номер.
Да ну серьёзно?
Просто сказать Ок гугл позвони шлагбаум ? Не судьба ?
Ещё чатджипити прикрутите
Проблема высосана из пальца и героически решена через известное место. Просто ткнуть в экран мультимедии для звонка или тупо сказать Сири набрать номер шлагбаума и не надо выдумывать колхоз с модемами и хостами
ну у некоторых может быть аллергия на яблоки (у меня например) и не на всех машинах есть экран мультимедии где можно в постоянном доступе иметь кнопку звонка. кроме того, возможна ситуация когда находясь дома (и имея одну из колонок с алисой) потребуется открыть шлакбаум скажем доставщику холодильника или какому-либо родственнику неожиданно нагрянувшему в гости. а если не ограничиваться шлакбаумом можно организовать независимое от наличия интернета уведомления об экстренных ситуациях (протечка, вторжение и т.д.). таким образом данное решение имеет право на существование и является одним из вариантов решения поставленной задачи
Здравствуйте
Спасибо за отличную статью!
Из линуха звонить научил модем. А вот с HA OS ни в какую( Команду отправляю и тишина...
Что может быть не так?

Вернуться назад
Вернуться назад