Добрый вечер! Использование (ввиду известных проблем с одним из мессенджеров) рекомендованного способа отправки уведомлений через Notify.sendSMS приводит к тому, что в определенный момент количество сообщений, сохраненных в модеме перед отправкой, превышает 100. А это, в свою очередь начинает крайне негативно сказываться и на времени, необходимом для работы mmcli --modem wbc --messaging-list-sms --output-json, и на объем выдаваемого ею вывода. Для каких целей SMS сохраняются после отправки и не удаляются???
Здравствуйте! Я автоматический помощник техподдержки Wiren Board. Сейчас выходной — я попробую помочь сразу, а в ближайший рабочий день инженеры посмотрят тему и ответят.
Я проанализировал ваш вопрос и постарался найти возможное решение:
Если потребуется дополнительное уточнение, приложенную информацию прошу направить нажав ответить на мое крайнее сообщение
Вы используете контроллер Wiren Board с модемом WBC-4G и отправкой SMS через Notify.sendSMS(...), при этом сообщения накапливаются в памяти модема (видно через mmcli --modem wbc --messaging-list-sms --output-json), и после отправки не удаляются, достигая сотни и более.
1. Зачем вообще сообщения хранятся в модеме
Типовой стек (ModemManager / модем) по умолчанию:
- создает SMS-объект в модеме;
- отправляет его;
- при этом запись в памяти модема не всегда автоматически удаляется (часто остаётся как
sentилиcompleted).
Это делается в основном:
- для возможности отладки (лог отправленных сообщений на стороне модема);
- для некоторых сценариев, когда приложение повторно использует или анализирует старые SMS.
Однако для сценария уведомлений на контроллере это чаще всего не нужно и действительно мешает, как в вашем случае.
2. Что можно сделать сейчас (обходной путь)
Пока нет «автоматической уборки» из коробки, можно периодически чистить SMS в модеме скриптом. Логика: раз в N минут удалять все старые/отправленные SMS через mmcli.
Пример простого варианта через cron (bash), который удаляет все SMS в модеме wbc:
#!/bin/bash
MODEM_ID="wbc"
# Получаем список всех SMS
SMS_LIST=$(mmcli --modem "$MODEM_ID" --messaging-list-sms | awk -F'/' '/SMS/ {print $NF}' | tr -d ' )
# Если есть SMS — удаляем
for ID in $SMS_LIST; do
mmcli --modem "$MODEM_ID" --messaging-delete-sms="$ID"
done
Можно положить, например, в /usr/local/bin/cleanup_sms.sh и добавить в cron:
*/15 * * * * root /usr/local/bin/cleanup_sms.sh >/dev/null 2>&1
Более аккуратный вариант — удалять только старые или только с состоянием sent/received, предварительно анализируя mmcli --messaging-list-sms --output-json, но идея та же.
Если вам будет удобнее, инженеры могут позже предложить более «правильный» пример (в т.ч. через wb-rules или systemd timer).
3. Почему это не делает сам Notify.sendSMS
Сейчас Notify.sendSMS ориентирован на передачу текста в подсистему отправки, а управление жизненным циклом SMS в модеме (создал‑отправил‑удалил) целиком ложится на ModemManager/модем и вспомогательные службы. По факту, при больших потоках сообщений (как у вас) накопление становится проблемой — это «дыра» в текущей архитектуре, и ваш кейс как раз показывает её на практике.
Я зафиксирую для инженеров две задачи:
- Проверить, действительно ли в стандартной конфигурации Wiren Board/WBC-4G сейчас нет автоочистки отправленных SMS.
- Продумать:
- либо изменение логики (автоудаление отправленных SMS),
- либо документированный параметр/механизм автоочистки (например, служба / правило).
Если сможете, дополнительно напишите в ответ:
- версию контроллера (например, WB 6 / 7 / 8.x);
- версию прошивки (
wb-releaseи/илиwb-info/cat /etc/os-release); - ориентировочный объём SMS в сутки, чтобы инженеры понимали нагрузку.
Это поможет предложить вам более точное решение.
Примечание: Я — искусственный интеллект, а не сотрудник-человек. В моих ответах возможны неточности.
Дополнение: при последовательном запросе таких сообщений (ответ по которым, естественно, приходит асинхронно), имеем неприятное в логе:
19-04-2026 10:28:19.999 [wb-rules] ERROR: [rule error] SmsManager.addSMS(40): ошибка при запросе SMS 1
19-04-2026 10:28:19.998 [wb-rules] ERROR: [rule error] SmsManager.addSMS(36): ошибка при запросе SMS 1
19-04-2026 10:28:19.992 [wb-rules] ERROR: [rule error] SmsManager.addSMS(37): ошибка при запросе SMS 1
19-04-2026 10:28:19.991 [wb-rules] ERROR: [rule error] SmsManager.addSMS(38): ошибка при запросе SMS 1
19-04-2026 10:28:19.794 [wb-rules] error: couldn't get bus: GDBus.Error:org.freedesktop.DBus.Error.LimitsExceeded: The maximum number of active connections for UID 0 has been reached
19-04-2026 10:28:19.792 [wb-rules] error: couldn't get bus: GDBus.Error:org.freedesktop.DBus.Error.LimitsExceeded: The maximum number of active connections for UID 0 has been reached
19-04-2026 10:28:19.780 [wb-rules] error: couldn't get bus: GDBus.Error:org.freedesktop.DBus.Error.LimitsExceeded: The maximum number of active connections for UID 0 has been reached
19-04-2026 10:28:19.774 [wb-rules] error: couldn't get bus: GDBus.Error:org.freedesktop.DBus.Error.LimitsExceeded: The maximum number of active connections for UID 0 has been reached
19-04-2026 10:28:19.768 [dbus] [system] The maximum number of active connections for UID 0 has been reached (max_connections_per_user=256)
19-04-2026 10:28:19.758 [dbus] [system] The maximum number of active connections for UID 0 has been reached (max_connections_per_user=256)
19-04-2026 10:28:19.757 [dbus] [system] The maximum number of active connections for UID 0 has been reached (max_connections_per_user=256)
19-04-2026 10:28:19.728 [dbus] [system] The maximum number of active connections for UID 0 has been reached (max_connections_per_user=256)
(сообщение удалено автором)