Каталог
Зателефонуйте мені
Каталог

Інтеграція Telegram-бота з контролером S7-1200

Інтеграція Telegram-бота з контролером S7-1200
Автор: Viktor Bondarchuk Опубліковано: 25.02.2025 Переглядів: 487 Коментарів: 0

У сучасній автоматизації важливо не тільки керувати обладнанням, а й оперативно отримувати повідомлення про його стан. Один із найзручніших способів організувати таку систему — це відправка повідомлень у Telegram-бот безпосередньо з контролера Siemens S7-1200.

У цій статті я розповім, як налаштувати контролер для відправки повідомлень у Telegram, використовуючи вже готову функцію, без необхідності налаштовувати HTTP-запити. Ми розглянемо основні етапи: створення та налаштування Telegram-бота, конфігурацію S7-1200, а також використання функціонального блоку TelegramPushNotification для відправки повідомлень.

Якщо ви хочете отримувати повідомлення про аварії, зміну параметрів або будь-які інші події безпосередньо на свій смартфон, ця інструкція допоможе швидко реалізувати таку систему.

Налаштування Ethernet

Щоб контролер S7-1200 міг відправляти повідомлення у Telegram-бот через інтернет, необхідно налаштувати мережеві параметри та вказати IP-адресу маршрутизатора. Для цього виконай такі кроки:

  1. Відкрийте властивості пристрою вашого контролера (PLC).
  2. Перейдіть у розділ "PROFINET interface [Xx] > Ethernet addresses" для PROFINET-інтерфейсу, який буде використовуватися для зв’язку.
  3. Вкажіть IP-адресу центрального процесора S7 відповідно до вашої мережевої конфігурації.
  4. Увімкніть опцію "Use router".
  5. Вкажіть IP-адресу маршрутизатора, через який контролер отримає доступ до інтернету.

Налаштування DNS-сервера

Щоб контролер S7-1200 міг коректно використовувати доменні імена в URL-адресах, потрібно налаштувати DNS-сервер. Зазвичай маршрутизатор може виступати в ролі DNS-сервера, але для кращої стабільності рекомендується використовувати надійні публічні DNS-сервери, наприклад 1.1.1.1 (Cloudflare) або 7.7.7.7 (Google).

Для налаштування DNS-сервера виконай такі кроки:

  1. Відкрийте властивості пристрою (Device properties) для вашого PLC.
  2. Перейдіть в розділ "DNS configuration".
  3. Вкажіть IP-адресу DNS-сервера у проєкті.
  4. Збережіть налаштування та завантажте їх у контролер.

Налаштування синхронізації часу через NTP

Для коректної роботи відправки повідомлень у Telegram контролеру S7-1200 необхідно мати точний системний час. Без налаштованої синхронізації через NTP сервер відправка повідомлень не буде працювати належним чином.

Щоб увімкнути синхронізацію часу через NTP, виконайте наступні кроки:

  1. Відкрийте Device Properties у вашому проєкті.
  2. Перейдіть до розділу "PROFINET interface [Xx] > Time synchronization".
  3. Поставте галочку "Enable time synchronization via NTP server".
  4. Вкажіть IP-адресу одного з українських NTP-серверів(або інших):
  • 91.194.50.73

  • 176.119.234.201

  • 91.197.70.131

  • 185.1.225.2

  1. Збережіть налаштування та завантажте їх у контролер.

Управління сертифікатами

При використанні HTTPS користувацькі дані передаються в зашифрованому вигляді. Перед передачею даних веб-сервер і клієнт (у цьому випадку PLC) обмінюються сертифікатами. Щоб контролер міг підтвердити автентичність веб-сервера, він повинен знати кореневий сертифікат, від якого походить сертифікат сервера.

У TIA Portal сертифікати управляються через глобальний менеджер сертифікатів. Менеджер сертифікатів містить список усіх сертифікатів, що використовуються у проєкті. У ньому можна імпортувати нові сертифікати, експортувати, оновлювати або замінювати існуючі. Кожному сертифікату присвоюється унікальний ID, який можна використовувати для посилань у програмних блоках.

Налаштування захищеної передачі даних через HTTPS

Щоб передавати дані безпечно, необхідно захистити проєкт у TIA Portal паролем. Виконайте наступні кроки:

  • Відкрийте розділ "Security settings > Settings" у дереві проєкту.
  • Натисніть "Protect this project".

  • Призначте ім’я користувача та пароль.
  • Натисніть "OK".

Завантаження сертифіката з сервера Telegram та його імпорт у TIA Portal

Щоб контролер S7-1200 міг безпечно встановлювати HTTPS-з’єднання з сервером Telegram, необхідно імпортувати кореневий сертифікат у TIA Portal. Для цього виконайте наступні кроки:

1. Завантаження сертифіката з сервера Telegram

Процедура описана для браузера Google Chrome:

  • Натисніть на значок замка у рядку адреси.

 

Виберіть "Certificate (Valid)".

  • Перейдіть у вкладку "Certification Path".
  • Виберіть найверхній сертифікат у списку (це кореневий сертифікат, від якого походять інші).
  • Натисніть "View Certificate".

  • Перейдіть у вкладку "Details".
  • Натисніть "Copy to File...".

  • Збережіть сертифікат у форматі DER-encoded (*.cer).

2. Імпорт сертифіката у TIA Portal

  • У дереві проєкту відкрийте "Security settings > Security features > Certificate manager".

  • Перейдіть на вкладку "Trusted certificates and root certification authorities".
  • Клацніть правою кнопкою миші у робочій області та виберіть "Import".
  • Виберіть збережений файл сертифіката та імпортуйте його.

Створення сертифіката для пристрою

Для встановлення зашифрованого HTTPS-з'єднання клієнту (у цьому випадку контролеру S7-1200) також необхідний власний сертифікат. Створіть його, виконавши наступні кроки:

  • Відкрийте властивості пристрою вашого контролера PLC.
  • Перейдіть у розділ "Protection & Security > Certificate manager".

Щоб використовувати імпортований сертифікат із глобального менеджера сертифікатів та створити сертифікат пристрою на основі кореневого сертифіката проєкту TIA Portal, поставте галочку "Use global security settings for certificate manager".

  • У розділі "Device certificates" двічі клацніть по комірці "<Add new>".
  • Клацніть ще раз на тій самій комірці та виберіть "Add new".

  • Виберіть "Self signed" та встановіть алгоритм шифрування SHA-256 для максимальної сумісності.
  • Натисніть "OK" для підтвердження.

  • У розділі "Certificates of the partner devices" двічі клацніть по комірці "<Add new>".
  • Клацніть ще раз на тій самій комірці та виберіть імпортований кореневий сертифікат сервера Telegram.

У розділі "Connection mechanisms > Communication mode to TIA Portal and HMI" виберіть імпортований кореневий сертифікат сервера Telegram.

Ідентифікатор сертифіката сервера можна знайти в глобальному менеджері сертифікатів за шляхом:
Security settings > Security features > Certificate manager > Trusted certificates and root certification authorities
Цей ID потрібно буде вказати у параметрі  serverCer у структурі LHTTPS_typeTLS для аргумента tls

 

Ідентифікатор сертифіката пристрою знаходиться в глобальному менеджері сертифікатів за шляхом:
Security settings > Security features > Certificate manager > Device certificates
Цей ID необхідно використовувати у параметрі clientCer у структурі LHTTPS_typeTLS для аргумента tls

Створення Telegram-бота

Щоб відправляти повідомлення з контролера S7-1200 через Telegram, спершу потрібно створити Telegram-бота. Ось покрокова інструкція:

1. Запуск Telegram

  • Відкрийте Telegram на вашому смартфоні або комп'ютері.

2. Пошук BotFather

  • У полі пошуку введіть "BotFather". Це офіційний бот від Telegram, який дозволяє створювати нових ботів.

3. Створення нового бота

  • Відкрийте чат з BotFather та натисніть "Start" (або наберіть команду /start).
  • Для створення нового бота надішліть команду /newbot.

BotFather запросить у вас назву для вашого бота. Це буде відображатися користувачам. Наприклад, "MyTestBot".
 

  • Після цього BotFather попросить вказати нікнейм вашого бота. Це має бути унікальне ім’я, яке буде закінчуватися на "bot". Наприклад, "my_test_bot".

4. Отримання токена

  • Після успішного створення бота, BotFather надасть вам токен для доступу до вашого бота. Це буде виглядати як великий рядок букв і цифр. Збережіть цей токен, оскільки він потрібен для налаштування вашого контролера S7-1200. Тримайте цей токен в секреті і нікому не розголошуйте, в випадку викрадення токена зловмисник отримає контроль над ботом.

Примітка: Токен виглядає як:
123456789:ABCDEFghijklmnOpqrstUVWXyz

5. Налаштування бота (опціонально)

Ви можете додати опис, фотографію та команду до вашого бота, використовуючи інші команди BotFather:

  • /setdescription – для додавання опису.
  • /setabouttext – для вказівки додаткової інформації про бота.
  • /setuserpic – для зміни фото профілю бота.
  • /setcommands – для налаштування команд, які бот може обробляти.

6. Перевірка бота

  • Пошукайте вашого бота в Telegram за його ніком, натисніть "Start", щоб переконатися, що він працює.

Що таке ChatID та як його дізнатися?

ChatID — це унікальний ідентифікатор чату в Telegram, який необхідно використовувати для відправки повідомлень через Telegram-бота. Цей ідентифікатор визначає, в який саме чат (або користувачеві) буде надіслано повідомлення. Існує два основних типи ChatID:

  • Користувацький ChatID — це ідентифікатор чату з конкретним користувачем.
  • Груповий ChatID — це ідентифікатор групового чату або каналу.

1. Користувацький ChatID

Це унікальний ідентифікатор для кожного користувача в Telegram. Якщо ви хочете відправити повідомлення конкретному користувачеві через бота, вам потрібно знати його ChatID.

2. Груповий ChatID

Для відправки повідомлень у груповий чат або канал, вам також потрібно отримати Group ChatID.

Як дізнатися ChatID через IDBot?

Для того, щоб дізнатися ChatID користувача або групи, можна скористатися спеціальним ботом в Telegram — @myidbot або іншими. Ось як це зробити:

1. Отримання ChatID для користувача

  1. Знайдіть бота @myidbot в Telegram.
  2. Напишіть йому /getid
  3. Бот автоматично надішле вам ваше ChatID. Це буде виглядати так:

Це і є ваш ChatID, який можна використовувати для відправки повідомлень через бота.

2. Отримання ChatID для групи

  1. Додайте @myidbot в вашу групу.
  2. Напишіть у групі /getgroupid
  3. Бот відправить вам ChatID групи.

Це буде виглядати так:

Якщо це груповий чат, ChatID починатиметься з мінуса (наприклад, -987654321).

 

Користувацький ChatID не має мінуса, в той час як груповий ChatID має мінус на початку.
Якщо ваш бот працює з кількома групами, вам потрібно буде визначити ChatID кожної з них окремо.

 

Огляд функції TelegramPushNotification

Функціональний блок TelegramPushNotification дозволяє здійснювати відправку, отримання та очищення буфера повідомлень через API Telegram.

sendMessage

Команда для відправки повідомлення на вказаний chatID. Необхідно утримувати параметр sendMessage в значенні true, поки не з'явиться сигнал done або error. Якщо значення зміниться на false до отримання цих сигналів, функція може зависнути.

getUpdates

Команда для отримання повідомлень. Вона повертає два значення: responseMessage (текст повідомлення) і responseChatId (chatID відправника). Якщо в буфері є кілька повідомлень, кожне повідомлення обробляється окремо, при цьому після кожного повідомлення надається сигнал ndr на один цикл контролера. Параметр getUpdates повинен бути встановлений в true до отримання сигналу done або error. Якщо значення зміниться на false до цих сигналів, функція також може зависнути.

deleteMsgList

Команда для очищення буфера повідомлень в Telegram API. Рекомендується використовувати після кожного запиту getUpdates. Необхідно утримувати параметр deleteMsgList в значенні true, поки не з'явиться сигнал done або error. Після цього можна встановити значення false.

connID

Унікальний ідентифікатор підключення для HTTP-запитів. Якщо є кілька викликів цієї функції або інших функцій, що використовують LHTTP, кожному екземпляру потрібно надати унікальний ідентифікатор.

botToken

API-токен, який надається через botFather в Telegram.

chatID

Унікальний ідентифікатор чату, в який потрібно надіслати повідомлення.

textMessage

Текст повідомлення, яке необхідно відправити.

tls

Аргумент типу даних LHTTP_typeTLS, що вказує ID сертифікатів.

Відправка повідомлень

Для відправки повідомлення необхідно вказати функції chatID отримувача, textMessage, а також встановити біт sendMessage в значення true. Після отримання сигналу done або error параметр sendMessage потрібно змінити на false.

Отримання повідомлень

Для отримання повідомлень потрібно встановити біт getUpdates в значення true, при цьому параметр chatID не потрібно вказувати. Функція повертає два значення: responseMessage (текст повідомлення) та responseChatID (chatID відправника). Якщо в буфері кілька повідомлень, функція обробляє їх по черзі та надає сигнал ndr після кожного повідомлення. Параметр getUpdates потрібно змінити на false після отримання результату done або error.

Очищення буферу повідомлень

Для очищення буфера вхідних повідомлень потрібно встановити біт deleteMsgList в значення true. Рекомендується виконувати очищення після кожного запиту getUpdates. Після отримання сигналу done або error параметр потрібно змінити на false.

Висновок

Отже, інтеграція функціоналу відправки повідомлень через Telegram-бота в контролер S7-1200 — це справжня знахідка для автоматизації та моніторингу. Це не просто можливість відправити повідомлення, а потужний інструмент для надсилання критичних даних, таких як показники системи, повідомлення про аварії, статуси роботи обладнання та інші важливі сповіщення прямо на мобільний пристрій. Завдяки такій інтеграції можна миттєво отримувати сповіщення про неполадки або зміни в роботі системи, що суттєво підвищує оперативність та ефективність управління.

Цей функціонал відкриває безмежні можливості для автоматизації процесів і оперативного реагування на ситуації, що потребують втручання. Якщо у вас виникне потреба впровадити подібний функціонал у вашу систему, ми готові надати всі необхідні послуги та реалізувати його відповідно до ваших вимог.

За цим посиланням ви можете завантажити приклад та документацію.

Коментарі

Додайте коментар...

Ім'я
E-mail (Не буде опублікований)
Ваш коментар
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Авторизація
Немаєте акаунта? Реєстрація
Забыли пароль?
E-mail
Введите e-mail Вашей учетной записи, чтобы получить пароль.
Введите корректно e-mail!
viber-chatЧат «А2М» в Viber telegram-chatЧат «А2М» в Telegram
Telegram QR
💬 Актуальні ціни
завжди під рукою