udvnl

 
<<< Back

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

Discuss (3) (10)

See also:
2024-06-21 Послеустановочные заметки
2024-05-21 RHVoice установка, проверка и прочее
2023-11-03 Пару мыслей о совместном применении SIP телефонии и систем «Умного Дома», а также немного об организации независимого от Internet канала связи с УД.
2023-10-14 Контроль SystemD и инструмент работы с системными логами через веб браузер
2023-10-10 Установка SIP сервера FreeSWITCH 1.10.10 на Raspberry Pi OS Lite (Debian11)
2023-01-03 Установка MajorDoMo с помощью скрипта от SergeJey на Raspberry Pi
2022-12-09 Где Телефон?
2022-05-30 Вариант установки Majordomo на Windows 10 с использованием пакета XAMPP. Немного о переносе и создании тестовой копии системы с Raspberry PI на Windows
2022-03-09 Небольшие заметки по подключению и использованию сервиса CONNECT
2022-02-27 Zigbee2mqtt, немного о стиках CC2531 и Sonoff USB Zigbee 3.0 Dongle Plus (сравнение, подключение, тестирование).
2021-09-23 Второй раз в первый класс. Часть 1: начало работы c базовым образом для RPi.
2020-12-31 Возможность создания канала управления через телефонные сети для системы домашней автоматизации.
2020-07-06 Чтение файлов из образа img Операционной системы. Возможность записи образа на меньшую по размеру SD карту памяти
2020-06-19 Raspberry Pi: немного о резервном копировании и актуальной копии системы
2020-05-07 Установка VoIP сервера FreeSWITCH с частичной интеграцией в систему MajorDoMo
2020-04-28 Установка базового образа MajorDoMo на Raspberry Pi. Начало первые шаги.
2019-10-07 Возможность создания видео звонков у MajorDoMo (RPI +WebCam)
2019-08-21 Установка USB аудиокарты и настройка звука в Raspberry Pi
2019-04-04 Сертификация в Z-Wave
2019-03-11 RPI Monitor полезное ПО для Raspberry PI и Orange Pi
2019-02-04 Тестирование пропускной способности канала Ethernet (Wi-Fi) с помощью утилиты IPerf
2018-12-23 Пошаговая инструкция с картинками по установки MajorDoMo на Raspberry Pi 3 с помощью скрипта от Immortal
2018-10-20 Установка Freeswitch 1.8.2 на Debian 9 (Raspbian Stretch) на базовый образ системы «Умного дома» MajorDomo
2018-08-14 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение первого устройства Z-Wave и первые шаги по автоматизации
2018-07-08 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение контроллера RaZberry и первые шаги по Z-Wave
2018-06-29 Пошаговая инструкция по установке образа Majordomo на Raspberry Pi
2018-06-21 Удаленное наблюдение за близкими, но к сожалению, больными людьми.

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

На форуме: udvnl