udvnl

<<< Назад

Создание голосового оповещения MajorDoMo

Постепенно будет наполняться.
при использовании консольного клиента Linphonerc появилась задумка о создании оповещения от MajorDomo к смартфону без использования дополнительного оборудования и своего VoIP сервера.
В процессе реализации дополнено решением.

Первым делом нам понадобиться два аккаунта от SIP провайдера с бесплатными входящими/исходящими внутри сети.
Для примера возьмем zadarma.com
1) Первый шаг производим регистрацию, у провайдера, при этом получаем доступ к личному кабинету и свой аккаунт SIP. Можем зарегистрироваться с нескольких почтовых ящиков, а можем пополнить счет и получить дополнительные номера. В любом случае у нас должно быть 2 номера (аккаунта) и пароля к нему.
На смартфон устанавливаем мобильное приложение подойдёт любой SIP клиент, для удобства и минимизации настроек я рекомендую zadarma, производим регистрацию. Итак мы задействовали один номер.

2) Для .NIX систем скачиваем и устанавливаем консольного клиента Linphonerc:
sudo apt-get install linphone-nogtk
Запускаем его, SIP клиент ругается на ALSA, не обращаем на это внимания.

даём следующую команду уже в самом клиенте:
register sip:xxxxxx@sip.zadarma.com sip.zadarma.com PASSWORD
смотрим статус:
status register
Выходим из клиента (при этом клиент сохраняет настройки в файл .linphonerc текущего пользователя
3) Делаем запись голосового зообщения (например Внимание системы была перезагружена, сейчас состояние в работе:
если одноплатный компьютер, то установку внешней звуковой карты и микрофона я описывал в предидущей заметке.
arecord -D plughw:1,0 -f cd /home/pi/alarm_restart.wav
4) После этого запускаем клиент
linphonec
И в нем даем следующие команды :
soundcard use files
play test_record.wav
call sip:хххххх@sip.zadarma.com
где хххххх номер для смартфона
При этом происходит вызов, при ответе - слышно проигрывание записанного файла с аварией.

PS по поводу скриптов и интеграции с УД, будет немного позже дополнено.
UPD: Обновлено:
Нашел способ простой реализации с помощью Linphonercsh:
Для запуска и управления Linphonec в режиме демона, используется утилита Linphonecsh. Первоначально при запуске необходима инициализация клиента linphonecsh -init. При выполнении этой команды происходит запуск консольного клиента, без загрузки конфигурационного файла.

Чтобы при запуске выполнялось чтение конфигурации запустим с флагом с:

linphonecsh init -c /home/pi/.linphonerc

Сейчас можем управлять консольным клиентом из терминала.

Список команд Linphonecsh:

  • Usage:
    linphonecsh <action> [arguments]
    where action is one of
    init : spawn a linphonec daemon (first step to make other actions)
    followed by the arguments sent to linphonec
    generic : sends a generic command to the running linphonec daemon
    followed by the generic command surrounded by quotes,
    for example "call sip:joe@example.net"
    register : register; arguments are
    --host <host>
    --username <username>
    --password <password>
    unregister : unregister
    dial : dial <sip uri or number>
    status : can be 'status register', 'status autoanswer' or 'status hook'
    soundcard : can be 'soundcard capture', 'soundcard playback', 'soundcard ring',
    followed by an optional number representing the index of the soundcard,
    in which case the soundcard is set instead of just read.
    exit : make the linphonec daemon to exit.*

    Попробуем выполнить следующие команды:

    linphonecsh generic 'soundcard use files'

    linphonecsh generic 'play alarm.wav'

    linphonecsh dial sip:ХХХХХ@sip.zadarma.com

Где generic — команды самой программы Linphonec. ХХХХХ — наш SIP номер, установленный на смартфон.

При этом происходит вызов, при ответе — слышно проигрывание записанного ранее файла с аварией.

Вручную всё заработало. Для интеграции с системой домашней автоматизации на основе MajorDoMo, для примера, возьмём аварийную ситуацию с перезапуском сервера.
Прописываем следующую строку в crontab (при загрузке ПК, загружается консольный клиент:

crontab -e

@reboot sudo -u pi linphonecsh init -c /home/pi/.linphonerc

Далее переходим на web страницу системы УД, переходим в Панель Управления — Сценарии — События — Startup..

Сценарии реализуются на языке программирования PHP. В коде уже есть одна строчка, которая при запуске системы произносит фразу с IP адресом сервера.
Добавим еще несколько:

exec ("sudo -u pi linphonecsh generic 'soundcard use files'");

exec ("sudo -u pi linphonecsh generic 'play alarm.wav'");

exec ("sudo -u pi linphonecsh dial sip:576935@sip.zadarma.com ");

Устанавливаем выполнить после сохранения, сохраняем, при этом происходит вызов на мобильный телефон.

Выполняем перезагрузку системы MajorDoMo, через Сервис — Перезагрузка/отключение.
После перезагрузки на телефон поступает голосовое уведомление. Такой же алгоритм действий можно сделать для другой критичной для вас аварии.

Немного изменив последовательность действий, можно установить в свою систему домашней автоматизации собственный сервер IP телефонии (Asterisk, Freeswitch и т.д.), подключить к нему VoIP шлюз и напрямую выходить на мобильного оператора или ТфОП. Этот вариант более функциональнее, имеет больше возможностей, но и требует несколько больших затрат, как материальных, так и для настройки системы.

Обсуждение (3) (10)

Смотрите так же:
07.10.2019 Возможность создания видео звонков у MajorDoMo (RPI +WebCam)
21.08.2019 Установка USB аудиокарты и настройка звука в Raspberry Pi
04.04.2019 Сертификация в Z-Wave
11.03.2019 RPI Monitor полезное ПО для Raspberry PI и Orange Pi
04.02.2019 Тестирование пропускной способности канала Ethernet (Wi-Fi) с помощью утилиты IPerf
23.12.2018 Пошаговая инструкция с картинками по установки MajorDoMo на Raspberry Pi 3 с помощью скрипта от Immortal
20.10.2018 Установка Freeswitch 1.8.2 на Debian 9 (Raspbian Stretch) на базовый образ системы «Умного дома» MajorDomo
14.08.2018 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение первого устройства Z-Wave и первые шаги по автоматизации
08.07.2018 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение контроллера RaZberry и первые шаги по Z-Wave
29.06.2018 Пошаговая инструкция по установке образа Majordomo на Raspberry Pi
21.06.2018 Удаленное наблюдение за близкими, но к сожалению, больными людьми.

Минск, Беларусь

На форуме: udvnl