Постепенно будет наполняться.
при использовании консольного клиента 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 шлюз и напрямую выходить на мобильного оператора или ТфОП. Этот вариант более функциональнее, имеет больше возможностей, но и требует несколько больших затрат, как материальных, так и для настройки системы.
Минск, Беларусь
На форуме: udvnl