Найти в Дзене
МНПП Сатурн

3. Отправляем сообщения из контроллера Saturn PLC в телеграм

Оглавление

В новой редакции С23-TLS появилась поддержка TLS. Пожалуйста, убедитесь, что у вас установлена последняя версия программного обеспечения. Для этого откройте «Эмулятор», перейдите в раздел «Помощь» и выберите «Проверить обновления». После этого SAT-SDK будет обновлен.

Обновляем SAT-SDK до последней версии.
Обновляем SAT-SDK до последней версии.

После того как обновление завершится, в разделе помощи появится новый раздел Telegram . Здесь подробно расписан состав библиотеки которым вы можете пользоваться. С помощью этих функций вы сможете полноценно работать с чат-ботом.

Раздел помощи по функциям работы с Telegram
Раздел помощи по функциям работы с Telegram

Что такое Telegram бот

Telegram — это один из самых популярных мессенджеров, доступный на различных платформах. Он предоставляет возможность создавать ботов — искусственных пользователей, чьими действиями можно управлять через программу.

Бот может реагировать на ваши сообщения, отправляя в чат свои ответы, или действовать по собственной инициативе, посылая различные уведомления, включая аварийные.

Saturn-PLC может стать таким ботом, что открывает перед вами практически неограниченные возможности для управления вашим проектом на языке C23 из любой точки мира, и всё это абсолютно бесплатно!

Чтобы начать, зарегистрируйте своего бота в своём Telegram-аккаунте.

Как всё работает.

В интернете по адресу https://api.telegram.org/bot вы можете найти сервер системы Telegram, где хранится множество чатов. Каждый чат имеет свой уникальный числовой идентификатор id, который используется для взаимодействия с чатом как пользователями, так и ботами. Все пользователи и боты также имеют свои собственные уникальные идентификаторы id.

Фактически, в системе Telegram именно эти числовые идентификаторы являются адресом, в то время как имена, фамилии и псевдонимы используются лишь для информации.

Пользователи отправляют сообщения с текстами, изображениями и документами в чат, в котором они участвуют. Эти сообщения хранятся на сервере Telegram в течение суток, после чего удаляются. Каждое полученное в чате сообщение сервер последовательно нумерует, и у каждого сообщения есть свой числовой идентификатор (update_id).

В то же время пользователи получают все эти сообщения с сервера и отображают их на своих устройствах (телефонах, планшетах или компьютерах).

Бот функционирует подобно обычному пользователю: он принимает сообщения с сервера из чата, в котором участвует, и может сам отправлять сообщения на сервер Telegram.

Как работет чат-бот Telegram
Как работет чат-бот Telegram

Важные аспекты, касающиеся работы бота в контроллере Saturn-PLC

1. Как и любой другой пользователь, бот Saturn-PLC взаимодействует с сервером Telegram, используя методы POST и GET стандартного протокола HTTPS. Это подключение осуществляется через сеансовое TCP-соединение с TLS-шифрованием.

2. Данные между сервером и ботом передаются в виде JSON-массивов. Бот отправляет JSON-данные с определенным содержимым, а сервер возвращает ему другой JSON-ответ. Структура этих JSON-данных подробно описана на сайте https://core.telegram.org/bots/api . Однако в большинстве случаев вам не нужно вникать во все детали — процесс обмена с сервером, формирования JSON-запросов и анализа JSON-ответов скрыт от вас внутри вызываемых функций tg_...

3. Пользовательская программа, работающая с сервером Telegram, должна регулярно (например, раз в минуту или чаще) проверять наличие новых сообщений на сервере и, при их обнаружении, читать их. После этого программа анализирует эти новые сообщения и отправляет ответы на них, если это запросы от пользователей к боту.

Начало регистрации бота на компьютере в приложении Telegram
Начало регистрации бота на компьютере в приложении Telegram

Регистрация бота

Чтобы создать нового бота в Telegram, вам нужно воспользоваться официальным ботом, созданным специально для управления другими ботами — @BotFather. Вот пошаговая инструкция:

1. В приложении Telegram найдите @BotFather через поиск.

2. Начните диалог с ботом, нажав на кнопку "Start".

3. Чтобы создать нового бота, отправьте команду "/newbot".

4. @BotFather попросит вас выбрать имя для вашего бота и уникальный username, который должен заканчиваться на "bot".

Если вы успешно выберете имя, @BotFather поздравит вас с регистрацией и отправит вам идентификатор бота BOT API ID — длинный уникальный код, который даст вам полный контроль над созданным ботом.

Скопируйте этот код и сохраните его в надежном месте как пароль. Никому не сообщайте этот код! Он понадобится вам позже в программе C23 для работы бота в контроллере.

Важно надежно хранить этот токен, так как он дает вашему боту полный доступ к управлению.

@BotFather также предоставляет возможность настроить некоторые основные параметры вашего бота, такие как описание, аватар и команды. Вот как это сделать:

Процесс настройки чат-бота
Процесс настройки чат-бота

Установка описания: Это первое, что видят пользователи, когда находят вашего бота. Описание должно быть ясным и конкретным, четко описывающим функции вашего бота.

Добавление аватара: Аватар помогает сделать вашего бота узнаваемым. Вы можете использовать любое изображение, соответствующее целям и стилю вашего бота.

Мы успешно завершили работу над ботом, и теперь он будет нашей надёжной опорой в Telegram. С его помощью мы сможем получать своевременные уведомления о любых тревожных ситуациях на объекте, а также задавать вопросы о его текущем состоянии.

Теперь мы переходим к подготовке контроллера Saturn PLC к взаимодействию с нашим ботом.

Первым шагом мы подключаем к контроллеру питание и интернет-кабель. Затем мы проверяем подключение к сети, нажав синюю кнопку "Вверх". В результате мы должны увидеть что-то похожее на то, что представлено на картинке ниже. Это означает, что контроллер успешно получил IP-адрес и все сетевые параметры, так как в настройках по умолчанию активирована опция «Получить IP автоматически по DHCP».

Контроллер включен и соединился с интернетом.
Контроллер включен и соединился с интернетом.

Далее грузим из облака приложений МНПП САТУРН ПО С23-TLS.

Для этого заходим в меню контроллера, нажав зеленую кнопку ">".

Первая страница МЕНЮ контроллера Saturn-PLC
Первая страница МЕНЮ контроллера Saturn-PLC

Синими стрелками выбираем пункт (5. Параметры контроллера) и активируем выбор зеленой кнопкой ">".

Страница "Параметры контроллера"
Страница "Параметры контроллера"

Синими стрелками выбираем пункт (7. Сменить Программное Обеспечение) и активируем выбор зеленой кнопкой ">".

Список ПО скачанный из облака приложений МНПП САТУРН
Список ПО скачанный из облака приложений МНПП САТУРН

С помощью синих стрелок на экране выберите пункт (PLC контр. (С23-TLS) и подтвердите свой выбор, нажав зелёную кнопку ">". Затем ещё раз подтвердите процесс загрузки нового программного обеспечения.

Начнётся загрузка последней версии программного обеспечения (ПО) 1.4 из облака и процесс программирования внутренней флеш-памяти. Пожалуйста, подождите, пока процесс завершится. В это время категорически запрещается отключать питание контроллера.

Далее на компьютере запускаем среду разработки Visual Studio Code с установленными плагинами SAT-SDK (Как установить это с нуля в другой нашей статье). И настраиваем соединение с нашим контроллером.

Процесс настройки соединения среды SAT-SDK и контролера Saturn-PLC
Процесс настройки соединения среды SAT-SDK и контролера Saturn-PLC

Чтобы начать, в нижней части экрана нажмите кнопку "Эмулятор ПЛК". Появится белое окно "Имитатор контроллера Saturn-PLC". В строке меню выберите "Saturn PLC" -> "Настройка подключения". В строке "Адрес" введите IP-адрес контроллера, который находится в вашей локальной сети. Если вы не помните адрес, нажмите кнопку "Поиск" и выберите найденный контроллер.

Поздравляем! Теперь ваша среда разработки и контроллер связаны друг с другом.

Для начала никакой код писать не будем, а скопируем его из "примера" встроенной помощи в файл main.c

"Пример" из встроенной помощи F1
"Пример" из встроенной помощи F1

Ищем строку, где идет инициализация бота tg_ini копируем туда id Только что созданного вами бота.

нажимаем кнопочку "компилировать" , и видим что компиляция прошла успешно. после этого кнопочкой "Прошивка" заливаем наше ПО в контроллер.

Компилируем и прошиваем.
Компилируем и прошиваем.

Котроллер после загрузки обращается к боту и просит сообщите ему информацию о нашем боте. И случае если мы сделали все правильно бот сообщит нам информацию о себе и покажет ее на экране контроллера.

Результат выполнения функции  tg_getMe
Результат выполнения функции tg_getMe

Смотри как это выглядит в коде.

Кусок кода получения информации о боте и выводе ее на экран контроллера.
Кусок кода получения информации о боте и выводе ее на экран контроллера.

После получения информации о боте, код , который вы видите в примере, будет обращаться к серверу Telegram каждые 20 секунд, чтобы проверить наличие новых сообщений от пользователя, то есть от вас.

Котроллер проверяет - нет ли сообщений на TG сервере.
Котроллер проверяет - нет ли сообщений на TG сервере.

В данном примере реализована всего одна команда которую вы можете подать, это SIG. И если мы напишем как на картинке ниже. то при очередной проверке контроллер "Увидит", что на сервере лежит сообщение "SIG". Для него это будет знаком что надо послать сообщение о состоянии всех входо DI и выходов DO нашего контроллера.

Результат общения бота с контроллером
Результат общения бота с контроллером

Мы запрашиваем у контроллера состояние входов и выходов через Telegram-бота, вводя команду SIG. Контроллер получает наш запрос и отвечает сообщением, например, «DI1=0, DI2=0 и так далее».

Вот так и происходит обмен сообщениями в Telegram.

Далее, внимательно изучите код на примере и внесите необходимые изменения в соответствии с вашими задачами.

На этом всё. Желаю вам успешной реализации ваших идей!