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)

Смотрите так же:
03.11.2023 Пару мыслей о совместном применении SIP телефонии и систем «Умного Дома», а также немного об организации независимого от Internet канала связи с УД.
14.10.2023 Контроль SystemD и инструмент работы с системными логами через веб браузер
10.10.2023 Установка SIP сервера FreeSWITCH 1.10.10 на Raspberry Pi OS Lite (Debian11)
03.01.2023 Установка MajorDoMo с помощью скрипта от SergeJey на Raspberry Pi
09.12.2022 Где Телефон?
30.05.2022 Вариант установки Majordomo на Windows 10 с использованием пакета XAMPP. Немного о переносе и создании тестовой копии системы с Raspberry PI на Windows
09.03.2022 Небольшие заметки по подключению и использованию сервиса CONNECT
27.02.2022 Zigbee2mqtt, немного о стиках CC2531 и Sonoff USB Zigbee 3.0 Dongle Plus (сравнение, подключение, тестирование).
23.09.2021 Второй раз в первый класс. Часть 1: начало работы c базовым образом для RPi.
31.12.2020 Возможность создания канала управления через телефонные сети для системы домашней автоматизации.
06.07.2020 Чтение файлов из образа img Операционной системы. Возможность записи образа на меньшую по размеру SD карту памяти
19.06.2020 Raspberry Pi: немного о резервном копировании и актуальной копии системы
07.05.2020 Установка VoIP сервера FreeSWITCH с частичной интеграцией в систему MajorDoMo
28.04.2020 Установка базового образа MajorDoMo на Raspberry Pi. Начало первые шаги.
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