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

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

Автор Тема: Telegram уведомления  (Прочитано 4832 раз)

Grigoriy075

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Telegram уведомления
« : 18 Сентября 2025, 10:24:33 »
Здравствуйте. Помогите написать скрипт отправки сообщения в Telegram. Есть скрипт вывода текста о причине запуска, как продублировать то же самое в Telegram?
Код: (delphi)
begin
  if Sender is TM_Text then   // проверяем, что Sender это текст
    with Sender as TM_Text do // приводим Sender к типу "TM_Text"
      case AsInt of
        128 : Text331.Text := 'Ручной';
        129 : Text331.Text := 'Автоматический';
        130 : Text331.Text := 'Дистанц.RS485';
      end;
end.
« Изменён: 18 Сентября 2025, 10:46:51 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Telegram уведомления
« Ответ #1 : 18 Сентября 2025, 11:16:57 »
Здравствуйте.

1. Предварительно нужно настроить параметры отправки Telegram-сообщений, подробнее см. в разделе "Настройка Telegram".
2. Для отправки Telegram-сообщения нужно использовать процедуру "SendTelegram".
3. Если требуется отправить Telegram сообщение группе пользователей, то можно использовать метод SendTelegram для группы.
4. Примеры скриптов для отправки Telegram-сообщений можно найти здесь и здесь.

К примеру, можно создать скрипт с типом события "Изменились переменные", добавить в список скрипта переменные, по которым должны отправляться оповещения и написать следующий код:
Код: (delphi)
begin
  // пропускаем первое изменение переменной, чтобы скрипт не выполнялся при перезапусках проекта
  if not IsFirstChange then
  // при необходимости добавляем в сообщение нужную информацию, например имя или описание переменной
    case Variable.AsInt of
      128 : SendTelegram ('Активирован ручной режим ' + Variable.Description);
      129 : SendTelegram ('Активирован автоматический режим ' + Variable.Description);
      130 : SendTelegram ('Активирован дистанционный режим RS-485' + Variable.Description);
    end;
end.
Данный скрипт будет отправлять сообщения в Telegram при изменении переменных, добавленных в список скрипта. Первое изменение переменных будет пропущено, чтобы сообщения не отправлялись при перезапусках проекта.

Также комментарий по приведенному Вами коду скрипта: рекомендуем использовать универсальные скрипты, тогда не нужно будет писать отдельный скрипт для каждого объекта. Исправленный вариант скрипта:
Код: (delphi)
begin
  if Sender is TM_Text then   // проверяем, что Sender это текст
    with Sender as TM_Text do // приводим Sender к типу "TM_Text"
      case AsInt of
        128 : Text := 'Ручной';
        129 : Text := 'Автоматический';
        130 : Text := 'Дистанц.RS485';
      end;
end.
Данный скрипт можно назначить всем объектам, у которых текст должен меняться по таким условиям.

Если не разберетесь, то пришлите на support@simple-scada.com текущую версию Вашего проекта из директории "..\Simple-Scada 2\Projects\" и укажите скрипт, который нужно проверить. 

Grigoriy075

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Telegram уведомления
« Ответ #2 : 18 Сентября 2025, 21:20:50 »
Огромное Вам спасибо, очень помогли.
Есть один момент если я убираю данную строку то все работает нормально
Код
 
 // пропускаем первое изменение переменной, чтобы скрипт не выполнялся при перезапусках проекта
  if not IsFirstChange then

Если снова ее прописываю то сообщения перестают отправляться, в чем может быть причина?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Telegram уведомления
« Ответ #3 : 18 Сентября 2025, 22:30:48 »
Цитировать
Есть один момент если я убираю данную строку то все работает нормально. Если снова ее прописываю то сообщения перестают отправляться, в чем может быть причина?
Назначение данной строки кода описано в комментарии скрипта выше. Функция IsFirstChange позволяет пропустить первое изменение переменной. Если убрать данную строку, то при каждом перезапуске проекта, либо при разрыве/восстановлении связи с OPC-сервером, будут отправляться сообщения. Т.е., несколько раз перезапустив проект, можно получить такое же количество одинаковых сообщений в Telegram.

Обычно требуется пропускать первое изменение переменной после запуска проекта и отправлять сообщение только при следующем изменении переменной. Если Вас устраивает отправка сообщений при каждом перезапуске проекта, то можно удалить данную строку из скрипта.