-
Notifications
You must be signed in to change notification settings - Fork 5
GSM
shaerware edited this page Mar 12, 2026
·
2 revisions
Управление GSM модулем SIM7600E-H для голосовых звонков и SMS.

Система поддерживает GSM телефонию через модуль SIM7600E-H:
- Приём входящих голосовых звонков
- Автоответчик с ИИ
- Отправка и приём SMS
- Уведомления о пропущенных звонках
Входящий звонок → GSM модуль → STT → LLM → TTS → GSM модуль → Абонент
↓
SMS уведомления
Информация о GSM модуле:
| Параметр | Описание |
|---|---|
| Состояние | Disconnected / Initializing / Ready / In Call |
| Сигнал | Уровень сигнала (0-100%) |
| SIM | Статус SIM-карты (Ready / PIN / PUK) |
| Сеть | Имя оператора, регистрация |
| Номер | Номер телефона SIM |
| Кнопка | Описание |
|---|---|
| 🔌 Инициализировать | Подключиться к модулю |
| 📞 Ответить | Принять входящий звонок |
| 📴 Завершить | Завершить текущий звонок |
История звонков:
| Колонка | Описание |
|---|---|
| Направление | Входящий / Исходящий |
| Номер | Номер абонента |
| Статус | Completed / Missed / Failed |
| Начало | Время начала |
| Длительность | Продолжительность звонка |
| Превью | Краткое содержание разговора |
| Поле | Описание |
|---|---|
| Номер | Номер получателя (+7...) |
| Текст | Текст сообщения (до 160 символов) |
| Колонка | Описание |
|---|---|
| Направление | Входящее / Исходящее |
| Номер | Номер абонента |
| Текст | Содержимое |
| Время | Дата и время |
| Статус | Delivered / Pending / Failed |
| Параметр | Описание | По умолчанию |
|---|---|---|
| AT порт | Порт для AT команд | /dev/ttyUSB2 |
| Аудио порт | Порт для PCM аудио | /dev/ttyUSB4 |
| Baud rate | Скорость порта | 115200 |
| Параметр | Описание |
|---|---|
| Автоответ | Включить автоматический ответ |
| Гудков до ответа | Количество гудков |
| Приветствие | Текст приветствия |
| Прощание | Текст прощания |
| Занято | Сообщение при занятости |
| Параметр | Описание |
|---|---|
| Белый список | Разрешённые номера (если пуст — все) |
| Чёрный список | Заблокированные номера |
| Параметр | Описание |
|---|---|
| Включить | Отправлять SMS уведомления |
| Номер для уведомлений | Куда отправлять |
| Шаблон пропущенного | Текст при пропущенном звонке |
| Шаблон голосового | Текст при голосовом сообщении |
| Параметр | Описание | По умолчанию |
|---|---|---|
| Тишина | Таймаут тишины (сек) | 5 |
| Макс. длительность | Максимум звонка (сек) | 300 |
| Параметр | Описание |
|---|---|
| LLM Backend | vLLM / Gemini / Cloud |
| Персона | Выбор персоны |
| Голос TTS | Голос для ответов |
| Пресет TTS | Настройки синтеза |
Консоль для отправки AT команд напрямую в модуль.
| Команда | Описание |
|---|---|
AT |
Проверка связи |
ATI |
Информация о модуле |
AT+CSQ |
Уровень сигнала |
AT+CPIN? |
Статус SIM |
AT+COPS? |
Текущий оператор |
AT+CNUM |
Номер телефона |
Список обнаруженных serial портов:
-
/dev/ttyUSB*— USB serial -
/dev/ttyACM*— ACM модемы
Аудио между модемом и системой передаётся через PCM (Pulse Code Modulation) по UART порту /dev/ttyUSB4.
| Параметр | Значение |
|---|---|
| Sample rate | 8000 Hz |
| Bit depth | 16-bit signed LE |
| Channels | 1 (mono) |
| Frame | 20ms = 320 bytes |
SIM7600E-H отправляет PCM данные «пачками»: 1-2 фрейма с реальным аудио, затем 8-10 пустых (нулевых) фреймов. При анализе тишины/речи пустые фреймы пропускаются — используются только ненулевые.
Входящий звонок
→ AT+CLIP определяет номер
→ AT+CPCMREG=1 включает PCM
→ PCM read → STT (Vosk) → текст
→ LLM (vLLM/Cloud) → ответ
→ TTS (XTTS/Piper) → PCM write → модем → абонент
→ AT+CPCMREG=0 выключает PCM
Скрипт scripts/test_pcm_audio.py — тестирование PCM аудио без запуска оркестратора:
python scripts/test_pcm_audio.pyВыводит RMS уровень каждого фрейма, статистику пустых/ненулевых фреймов, и считает среднее значение аудио.
| Проблема | Статус | Описание |
|---|---|---|
| Тишина при входящих | В работе (#558) | PCM burst-паттерн обрабатывается, но полноценное двустороннее аудио ещё тестируется |
| Исходящие на мобильные | Ограничение тарифа | Сброс сетью, нужен тариф с безлимитными вызовами |
ATH не сбрасывает |
Workaround | Использовать AT+CHUP вместо ATH
|
| Характеристика | Значение |
|---|---|
| Сети | 4G LTE, 3G, 2G |
| Голос | VoLTE, CS Voice |
| SMS | Text, PDU |
| Интерфейс | USB, UART |
| Питание | 5V, 2A |
SIM7600E-H Компьютер
USB ─────────── USB порт
После подключения появятся порты:
/dev/ttyUSB0 - Diagnostic
/dev/ttyUSB1 - GPS NMEA
/dev/ttyUSB2 - AT Commands ← Используем
/dev/ttyUSB3 - Modem
/dev/ttyUSB4 - Audio PCM ← Используем
- USB кабель
- SIM-карта с активным тарифом
- Антенна (LTE + GPS опционально)
- Питание 5V 2A (через USB или внешнее)
| Метод | Endpoint | Описание |
|---|---|---|
| GET | /admin/gsm/status |
Статус модуля |
| POST | /admin/gsm/initialize |
Инициализация |
| GET | /admin/gsm/config |
Получить конфиг |
| PUT | /admin/gsm/config |
Обновить конфиг |
| GET | /admin/gsm/calls |
Список звонков |
| GET | /admin/gsm/calls/active |
Активный звонок |
| POST | /admin/gsm/calls/answer |
Ответить |
| POST | /admin/gsm/calls/hangup |
Завершить |
| POST | /admin/gsm/calls/dial |
Позвонить |
| GET | /admin/gsm/sms |
Список SMS |
| POST | /admin/gsm/sms |
Отправить SMS |
| POST | /admin/gsm/at |
AT команда |
| GET | /admin/gsm/ports |
Список портов |
| Статус | Описание |
|---|---|
disconnected |
Модуль не подключен |
initializing |
Инициализация |
ready |
Готов к работе |
incoming_call |
Входящий звонок |
in_call |
Разговор |
error |
Ошибка |
| Статус | Описание |
|---|---|
ringing |
Звонит |
active |
Разговор |
completed |
Завершён |
missed |
Пропущен |
failed |
Ошибка |