**Технології індустрії 4.0. Лабораторний практикум. ** Автор і лектор: Олександр Пупена
<- до лаборних робіт | на основну сторінку курсу |
---|---|
У цій частині лабораторної роботи необхідно реалізувати Телеграм-бота, який буде в онлайн режимі забезпечувати зв’язок користувача з RPI.
Знайдіть в телеграмі і додайте до своїх контактів @BotFather
- це бот, який створює ботів
і введіть команду /start
з’явиться вікно з доступними командами
рис.3.16. Доступні команди створення телеграм-бота
/newbot
для створення нового ботарис.3.17. Команда створення телеграм-бота
RPI Ivanenko Ivana
рис.3.18. Надання імені телеграм-боту
RPI_IvanenkoIvana_Bot
За допомогою цього нікнейма можна знайти й додати вашого бота до своїх контактів.
рис.3.19. Надання імені користувача телеграм-боту
Збережіть токен, який видав бот, бо він нам знадобиться згодом для керування.
Добавте бота до своїх контактів t.me/<username>
.
за допомогою RPI_IvanenkoIvana_Bot
ви зможете завжди відредагувати своїх ботів
node-red-contrib-telegrambot
Ознайомтеся з описом бібліотеки node-red-contrib-telegrambot
створіть в Node-RED новий потік з іменем bot
створіть потік, як показано на рис.3.20; з правилами заповнення конфігураційного вузла ознайомтеся в описі
рис.3.20. Перший варіант бота в Node-RED
Зроблений потік робить ехо-відповіді на будь яке повідомлення в приватному чаті.
зробіть розгортання потоку
зайдіть в Telegram добавте контакт свого бота, якщо ще не добавили
зайдіть в чат і натисніть кнопку Розпочати
або команду /start
якщо бот працює, Вам повинна повернутися та сама команда
рис.3.21. Перший запуск бота - перевірка
chatId
він вам знадобиться для відправки повідомлення до вказаного чату.рис.3.22. Аналіз отриманого повідомлення
У подальшому бот буде використовуватися в діалозі тільки з використанням команд. Перша команда - це /start
має виводити список доступних команд.
рис.3.23. Формування стартового повідомлення допомоги
Функція “показати команди має наступний вигляд”
let txtmsg = "/start - показати базові команди\r\n";
txtmsg += "/sp - виставлення уставок\r\n";
txtmsg += "/pv - отримання плинних значень\r\n";
txtmsg += "/alm - список активних тривог\r\n";
txtmsg += "/rprt - сформувати звіт\r\n";
msg.payload.content = txtmsg;
return msg;
зробіть розгортання потоку, у чаті наберіть команду /start
, повинной вийти повідомлення з командами
натисніть на команду /start
- дія повинна повторитися, що показує, що команди в списку можна натискати
chatId
необхідно було визначити в пункті 2.5.зверніть увагу, що в
inject
повинен бути формат корисного навантаження{}JSON
рис.3.24. Відправка тестового повідомлення
У цьому пункті необхідно зробити формування повідомлення в Телеграм, коли значення змінних rad
та val
що імітувалися в попередній частині лабораторної роботи будуть вище заданих значень.
наповнення буферу
з попередньої частини лабораторної роботи, вставивши фрагмент між flow.set ("trend", trend);
та return
flow.set ("trend", trend);//записати в контекст потоку
//-------------------
let rtdb = { //глобальна змінна
trend: trend,
rad: rad,
val: val
}
global.set ("rtdb", rtdb);
//---------------------
return msg;
цей фрагмент записує буфер, та значення змінних в глобальний контекст
bot
наступний фрагмент:рис.3.25. Генерування тривог - програма
Функція Alarm
має наступний зміст
let rtdb = global.get ("rtdb") || {};
let alm = global.get ("alm") || { //система тривог
state:{radHI:false, valHI:false}, //стан тривог
sp: {radHI:10.0, valHI:2.0} //уставки тривог
};
let almmsg = "";
//умова тривоги активна?
let alm_radHI = rtdb.rad > alm.sp.radHI;
let alm_valHI = rtdb.val > alm.sp.valHI;
//якщо тривога тільки активувалася
if (alm_radHI && !alm.state.radHI) {
almmsg += "Радіани дорвінюють " + rtdb.rad + " , що вище зданого значення " + alm.sp.radHI + "\r\n";
}
if (alm_valHI && !alm.state.valHI) {
almmsg += "Синус дорвінює " + rtdb.val + " , що вище зданого значення " + alm.sp.valHI + "\r\n"
}
//запис у стан тривоги
alm.state.radHI = alm_radHI;
alm.state.valHI = alm_valHI;
//збереження станів тривоги в глобальному контексті
global.set ("alm", alm);
//якщо хоча виникла хоча б одна тривога - відправка повідомлень
if (almmsg.length > 1) {
msg.payload = {chatId : #######, //тут має бути ваш ідентифікатор
type : 'message',
content : almmsg}
return msg;
}
Вузол change
потрібен для того щоб змінювати уставку для однієї з змінних, наприклад для rad
. Ця уставка аварійно високого значення зберігається в глобальному контексті як alm.sp.radHI
. Значення rad
змінюється від 0
до 6.28
а val
від -1
до 1
. Таким чином, щоб згенерувати тривогу про високе значення, необхідно його вказати в цих межах.
timestamp
та change
сформуйте значення alm.sp.radHI
рівним 3
.У результаті з певним періодом повинні генеруватися в чаті тривоги про перевищення значення.
alm.sp.radHI
в значення вище 6.28
, щоб тривоги не генерувалисяУ цьому пункті необхідно зробити зміну уставок з чатую Для цього використовується команда /sp
яка формує клавіатуру з 3-ма кнопками:
/rad
- вибору уставки верхнього рівня для змінної rad
, відправиться відповідна команда/val
- вибору уставки верхнього рівня для змінної val
, відправиться відповідна командавідміна
- відмова від виборуДалі при виборі змінної формується відповідна команда, яка обробляється окремим обробником, що просить ввести значення цих змінних уставок.
bot
наступний фрагмент:рис.3.26. Виставлення уставок - програма
генерування клавіатури
, який наведений нижчеcontext.global.keyboard = {pending : true};
let opts = {
reply_to_message_id: msg.payload.messageId,
reply_markup: JSON.stringify({
keyboard: [
['/rad'],
['/val'],
['відміна']],
'resize_keyboard' : true,
'one_time_keyboard' : true
})
};
msg.payload.content = 'Виберіть змінну';
msg.payload.options = opts;
return [msg];
зробіть розгортання потоку
введіть команду /sp
рис.3.27. Виставлення уставок - перевірка
натисніть кнопку /rad
введіть значення 3
проконтролюйте, що тривоги будуть спрацьовувати, поверніть задане значення до 10
аналогічним чином змініть значення уставки для змінної /val
(наприклад 0.5
)
реалізуйте самостійно команди:
видачі списку активних тривог у форматі “назва тривоги” у новому рядку, якщо активних тривог немає - видати повідомлення “Немає активних тривог”
попросіть свого товариша протестувати Вашого чат-бота
відправте ім’я чат-бота для перевірки викладачем
Виконання даного пункту буде враховуватися як додаткові 5 балів на іспиті
попросіть у викладача запрошення на бот-чат групу
відлагодіть ваш бот, щоб він правильно працював у групі