Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Перестали приходить сообщения в Telegram  (Прочитано 259 раз)

Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 166
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Добрый день!
Помогите разобраться в причине, по которой перестали приходить сообщения с отчетами Telegram.
Есть действующий проект который работает более года, настроена отправка сообщений в Телеграм после формирования отчета, отчет идёт вложением.
Всё хорошо работало до 11 октября, после сообщения перестали доходить, на сервере ошибки.
При тесте через настройки доходит сообщение от Simple-Scada.
В проекте ничего не менялось, версия скады 2.6.15.0.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3194
    • Просмотр профиля
    • Simple-Scada
Re: Перестали приходить сообщения в Telegram
« Ответ #1 : 13 Октября 2025, 13:20:21 »
Здравствуйте.

Текст ошибки говорит о проблеме с SSL шифрованием при попытке соединиться с сервером Telegram.
Перепроверили отправку (включая вложения и отчеты) с последней версией и с версией 2.6.15.0. Проблем не возникает.
1. Время на ПК соответствует текущему времени?
2. Какой "Имя компьютера" задано в ОС?
3. Откройте в проводнике Windows путь "%ProgramData%\Simple-Scada 2" и перейдите в папку с проектом. В ней есть файлы с именами "doneRepXX.pdf"?
4. Какой именно код используется для отправки сообщений?
5. Отправка сообщений без вложений выполняется сервером скады?
6. Проблема возникает только на одном ПК, или на других тоже?

Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 166
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Re: Перестали приходить сообщения в Telegram
« Ответ #2 : 13 Октября 2025, 14:44:34 »
1. Время на ПК соответствует текущему времени?
2. Какой "Имя компьютера" задано в ОС?
3. Откройте в проводнике Windows путь "%ProgramData%\Simple-Scada 2" и перейдите в папку с проектом. В ней есть файлы с именами "doneRepXX.pdf"?
4. Какой именно код используется для отправки сообщений?
5. Отправка сообщений без вложений выполняется сервером скады?
6. Проблема возникает только на одном ПК, или на других тоже?
1. Время соответствует текущему, Пермский край +2 МСК.
2. Имя компьютера RUS-EKONIVA
3. В указанной папке есть 1 файл doneRep176 сформированный сегодня в 15.50, в это же время есть ошибке на сервере с неотправленными отчетами в Телеграм
4. Отчет отправляется в скрипте Done_SQL
Код: (delphi)
    30:
      begin
        if not DataSet.IsEmpty then
          begin
            if DataSet[3].AsInt = UNL_Port.Value then
            begin
             aStr := 'Готов';
                SelIdRecipe.Value := DataSet[0].AsInt;
                StartTimeSQL.Value := MySQLDateTime(TimeStartRecipes.Value, dttMillisecond);
                EndTimeSQL.Value := MySQLDateTime(TimeEndRecipes.Value, dttMillisecond);
                StartTimeSQL.Value := StringReplace(StartTimeSQL.Value, Chr(39), '', [rfReplaceAll, rfIgnoreCase]);
                EndTimeSQL.Value := StringReplace(EndTimeSQL.Value, Chr(39), '', [rfReplaceAll, rfIgnoreCase]);
                aReport := ReportBuild("Отчёт по заказу подробный");                       //строим отчет
                aTelegram := SendTelegram('Отчет по заказу №'+DataSet[0].AsStr);  // создаём telegram сообщение
                aTelegram.AttachReport(aReport, 'Отчёт по заказу подробный');  // прикрепляем отчет к telegram сообщению
            end
            else aStr := 'Выполняется';

            if DataSet[1].AsInt <> UNL_Port.Value then
              begin
                aSngl := UNL_Weight.Value + DataSet[2].AsFloat;
                RunSQL('UPDATE `orders` SET `portdone` = '+QuotedStr(IntToStr(UNL_Port.Value))+' , '+
                                            '`status` = '+QuotedStr(aStr)+' , '+
                                            '`wdone` = '+QuotedStr(FloatToStr(aSngl))+
                                            ' WHERE `id` = '+QuotedStr(DataSet[0].AsStr),nil,20);
              if DataSet[3].AsInt = UNL_Port.Value then
                begin
                  UNL_Port.Value := 0;
                  UNL_OrderNum.Value := 0;
                end;
              end;
          UNL_Weight.Value := 0;
          end;
      end;
5. Простое сообщение с текстом скриптом по кнопке также не отправляется, ошибки на сервере те же.
6. На другом ПК проверить нет возможности.

Повторюсь - отправка исправно работала 1,5 года без каких-либо изменений в проекте и конфигурации компьютера.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3194
    • Просмотр профиля
    • Simple-Scada
Re: Перестали приходить сообщения в Telegram
« Ответ #3 : 13 Октября 2025, 20:30:45 »
Цитировать
Повторюсь - отправка исправно работала 1,5 года без каких-либо изменений в проекте и конфигурации компьютера.
Что-то очевидно изменилось. Скада, как и любая другая скомпилированная программа, может повторять одно и то же действие бесконечно, если условия работы не будут меняться. Нет какого-то таймера, или ограничения по сроку, после которого скада начинает работать по-другому.
Для Telegram сообщений скада отправляет HTTP-запросы на "https://api.telegram.org/", порт 443. Причем утилита настроек (Options.exe) и сервер скады, используют один и тот же код для отправки и те же библиотеки OpenSSL. Изначально мы предположили, что разработчики Telegram изменили список разрешённых шифров TLS и теперь скада не может согласовать шифры. Это самая распространённая причина таких ошибок. Но тогда проблема возникла бы у всех пользователей сразу и легко воспроизводилась бы. К тому же та же ошибка возникала бы при отправке сообщения из утилиты настроек. Выявить другие причины проблемы значительно сложнее.

Цитировать
Простое сообщение с текстом скриптом по кнопке также не отправляется, ошибки на сервере те же.
Если сообщение только с текстом не отправляется сервером, а через утилиту настроек на том же ПК - отправляется, то можно предположить, что что-то влияет именно на сервер скады. Сильнее всего сократить область поиска можно следующими тестами:
1. Запустить ту же версию скады с тем же проектом на другом ПК в той же сети. Если на нём отправка работает, значит причина точно в ПК, на котором возникает ошибка;
2. Запустить ту же версию скады с тем же проектом на другом ПК в другой сети. Если на нём отправка работает, значит причина точно связана с сетью;
3. Создать новый пустой проект с кнопкой, по нажатию которой отправлять Telegram сообщение. Запустить на сервере только этот проект. Если при нажатии на кнопку возникает та же ошибка, значит проблема не связана с проектом;
4. Повторно установить ту же версию скады, на случай, если какие-то файла скады были изменены/повреждены;
5. Можно сделать один тест с запуском сервера скады от имени администратора (кликнуть ПКМ по ярлыку сервера, в открывшемся меню выбрать "Запуск от имени администратора"). Если ничего не изменилось, запустить как обычно;
6. Временно отключить ПО, которое может влиять на сервер скады (антивирус / файрвол и т.п.), или на сетевой трафик и перезапустить сервер скады;

Ещё вопросы:
1. Когда в последний раз перезагружался ПК?
2. ПК подключен к интернету напрямую, без прокси/VPN?
3. Скада запущена в виртуальной машине, или в основной ОС?
4. Во время работы сервера скады на ПК достаточно свободного места и свободной оперативной памяти?

Если есть возможность, то вышлите текущую версию проекта для проверки на support@simple-scada.com, мы сделаем тесты.
« Изменён: 13 Октября 2025, 20:38:37 от Simple-Scada »