Проблемы с gsm

Товарищи, есть одна маленькая, но очень большая проблема… gsm модуль установлен и настроен, симкарта рабочая, и даже отсылает смс, но не все и не всегда, летят ошибки и отваливается сам модуль, подскажите что делать.
Вот правило отвечающее за отправку СМС

// Имя устройства и канала, которые отслеживают напряжение
var voltageDevice = "ST";
var voltageChannels = ["Urms L1", "Urms L2", "Urms L3"];

// Имена виртуальных устройств для настройки границ напряжения
var voltageMaxDevice = “Param”;
var voltageMaxChannel = “VoltageMax”;
var voltageMinDevice = “Param”;
var voltageMinChannel = “VoltageMin”;

// Переменные для хранения таймеров
var voltageCheckTimer = null;
var buzzerTimer = null;

// Флаг для отслеживания состояния напряжения
var isVoltageOutOfRange = false;

// Список e-mail адресов для отправки сообщений
var emailRecipients = [
123@komus.net”,
321@komus.net”,
456@komus.net”,
654@komus.net”,
789@komus.net”,
987@komus.net”,
7658@tvr.komus.net”,
567@gmail.com
];

// Список номеров телефонов для отправки SMS сообщений
var smsRecipients = [
“+71234567890”,
“+71234567890”,
“+71234567890”,
“+71234567890”,
“+71234567890”,
“+71234567890”,
“+71234567890”,
“+71234567890”
];

// Функция для отправки e-mail сообщения
function sendEmail(subject, message) {
var emailCommand = “echo '” + message + “’ | mail -s '” + subject + "’ ";
emailRecipients.forEach(function(email) {
try {
runShellCommand(emailCommand + email);
} catch (error) {
log("Ошибка при отправке e-mail на " + email + ": " + error);
}
});
log(“E-mail сообщения отправлены”);
}

// Функция для отправки SMS сообщения
function sendSMS(message) {
smsRecipients.forEach(function(phone) {
try {
Notify.sendSMS(phone, message);
} catch (error) {
log("Ошибка при отправке SMS на " + phone + ": " + error);
}
});
log(“SMS сообщения отправлены”);
}

// Функция для включения зуммера на 10 секунд
function activateBuzzer() {
dev[“buzzer”][“enabled”] = true;
dev[“TH”][“Buzzer”] = true;
dev[“BZ”][“K1”] = true;
buzzerTimer = setTimeout(function() {
dev[“buzzer”][“enabled”] = false;
dev[“TH”][“Buzzer”] = false;
dev[“BZ”][“K1”] = false;
buzzerTimer = null;
// Если напряжение все еще вне допустимых пределов, повторно включаем зуммер
if (isVoltageOutOfRange) {
activateBuzzer();
}
}, 10000);
}

// Функция для обработки события выхода напряжения за пределы
function handleVoltageOutOfRange() {
var voltageMax = dev[voltageMaxDevice][voltageMaxChannel];
var voltageMin = dev[voltageMinDevice][voltageMinChannel];
var outOfRange = false;
var currentVoltages = {};

voltageChannels.forEach(function(channel) {
    var currentVoltage = dev[voltageDevice][channel];
    currentVoltages[channel] = currentVoltage;
    if (currentVoltage > voltageMax || currentVoltage < voltageMin) {
        outOfRange = true;
    }
});


if (outOfRange) {
    // Если напряжение вышло за пределы, запускаем таймер на 5 секунд
    if (voltageCheckTimer === null) {
        voltageCheckTimer = setTimeout(function() {
            // По истечении 5 секунд проверяем напряжение снова
            var voltageAfterTimeout = {};
            var stillOutOfRange = false;

            voltageChannels.forEach(function(channel) {
                var voltage = dev[voltageDevice][channel];
                voltageAfterTimeout[channel] = voltage;
                if (voltage > voltageMax || voltage < voltageMin) {
                    stillOutOfRange = true;
                }
            });

            if (stillOutOfRange && !isVoltageOutOfRange) {
                // Если напряжение все еще за пределами и флаг не установлен, отправляем e-mail и SMS сообщения
                var message = "Напряжение вышло за пределы КЦ Тверь: " + JSON.stringify(voltageAfterTimeout);
                sendEmail("Проблема с напряжением КЦ Тверь", message);
                sendSMS(message);
                isVoltageOutOfRange = true;
                // Включаем зуммер
                activateBuzzer();
            }
            // Сбрасываем таймер
            voltageCheckTimer = null;
        }, 5000);
    }
} else {
    // Если напряжение восстановилось и флаг установлен, отправляем сообщения о нормализации
    if (isVoltageOutOfRange) {
        var message = "Напряжение вернулось в норму КЦ Тверь: " + JSON.stringify(currentVoltages);
        sendEmail("Напряжение в норме КЦ Тверь", message);
        sendSMS(message);
        isVoltageOutOfRange = false;
        // Отключаем зуммер, если он включен
        if (buzzerTimer !== null) {
            clearTimeout(buzzerTimer);
            buzzerTimer = null;
                dev["buzzer"]["enabled"] = false;
                dev["TH"]["Buzzer"] = false;
                dev["BZ"]["K1"] = false;
        }
    }
    // Сбрасываем таймер, если он был установлен
    if (voltageCheckTimer !== null) {
        clearTimeout(voltageCheckTimer);
        voltageCheckTimer = null;
    }
}

}

// Подписываемся на изменения значения напряжения для всех фаз
voltageChannels.forEach(function(channel) {
defineRule(“voltageOutOfRangeRule_” + channel, {
whenChanged: voltageDevice + “/” + channel,
then: function(newValue, devName, cellName) {
handleVoltageOutOfRange();
}
});
});

приложен диагностический архив, доступен только сотрудникам поддержки
(211,5 КБ)

Добрый день.
К сожалению в архиве нет данных до перезапуска сегодня утром.
На всякий случай: точно ли включено “не отключать интерфейс при переключении”?

Такая проблема наблюдается на 10 из 12 контроллеров, просто потому что 2 из них без сети, стабильной работы и отправки сообщений нет, половину отправляет, половину нет

Я пока не увидел логов, к сожалению. Создавайте архив после ошибки, например, не перезпуская ничего.

Так я и делал после ошибок

В таком случае - когда, в какое время была ошибка?

Могу в личные отправить логи с wb-rules, дабы не всетить тут номерами

Да, хорошо. И логи MM, NM и ядра за тот же период.

По симптомам: https://wirenboard.com/wiki/WB_7:_Errata#ERRWB74004:_Зависание_GSM_модема_из-за_электромагнитных_наводок