Технології індустрії 4.0. Лабораторний практикум. Автор і лектор: Олександр Пупена
<- до лаборних робіт | на основну сторінку курсу |
---|---|
Одна із областей застосування MQTT – це обмін між пристроями та програмами, що підключені до Інтернет. У даному лабораторному занятті використовується загальнодоступні брокери, наприклад test.mosquitto.org
або mqtt.eclipse.org
. Слід звернути увагу, що їх використання є безкоштовним, але вони не гарантують безперебійну роботу сервісу, тому їх не слід використовувати для реальних рішень, що потребують надійних з’єднань та цілодобового використання. За необхідності використання надійних сервісів, слід користуватися іншими брокерами власними, або хмарними.
Також в роботі використовуються тестові клієнти:
mqtt.eclipse.org
, подивіться на налаштування і натисніть Connect
.test.mosquitto.org
рис.3.1. Налаштування MQTT Explorer
Після з’єднання Ви побачите усі теми, які публікуються на брокері.
$SYS
для відображення тільки системних повідомленьрис.3.2. Фільтрування системних повідомлень на брокері
$SYS
clients/connected
, який показує кількість підключених клієнтів. У деталізації History
Ви побачите перелік усіх повідомлень, які були отримані з початку сеансу а також їх значення у вигляді графіку.рис.3.3. Деталізація переліку повідомлень
Disconnect
. Зайдіть в налаштування Advanced
. Подивіться налаштування: у списку тем вказано фільтр підписки на усі теми. На кожну тему підписка вказана з QoS=0
test.mosquitto.org
Add New Topic Subscription
і в полі Topic
задайте$SYS/broker/clients/connected
У випадку відсутності зв’язку з брокером зробіть перевірку на test.mosquitto.org
.
myname/device1/val
де myname
- це якесь придумане ім’я, яке має бути унікальне в адресному просторі брокера
Message
пишіть якесь числове значенняmyname
Перейдіть на http://edu.asu.in.ua:1880/ui/#/0 (надалі, тестовий сервер) виберіть вкладку і групу елементів з вашим варіантом.
рис.3.4. Вигляд сторінки з варіантом на тестовому сервері
test.mosquitto.org
Advanced
, де:
NUFT TI4/#
Back
Connect
для підключення до брокераRAW
Publish
.MQTT
та деактивуйте існуючі.Network
вставте вузол MQTT In
. В налаштуваннях Server добавте новий брокер MQTT з назвою mosquitto
і адресою серверу http://test.mosquitto.orgрис.3.5. Налаштування брокеру в MQTT
MQTT in
введіть NUFT TI4/VariantX/#
де X – номер вибраного варіанту. Це значить, що цей вузол підписується на всі теми з даної гілки.У випадку відсутності зв’язку з брокером зробіть спробу пізніше.
Програма та зовнішній інтерфейс матиме вигляд приблизно як на рис. 3.6. Для відображення підписів використовуйте теми а для формату відображення чисел ангулярні фільтри.
рис.3.6. Фрагмент програми в Node-RED для роботи з MQTT
рис.3.7. Фрагмент програми для генерування синусоїди
Для тестування можливостей MQTT в Node-RED рекомендується зав’язати видавця з абонентом у тому самому потоці але з різними підключеннями.
Messages
pupenasan
змінюєте на власну унікальну назву типу myname
, який був вибраний Вам в п.1.3MQTT-in
та MQTT-out
пропишіть різні підключення Client1
та Client2
Inject
) задайте рівним 10 секундрис.3.8. Реалізація “коротко-замкнутого” з’єднання видавця і абонента в Node-RED
let rad = context.get ("rad") || 0;
rad = (rad>6.28) ? 0 : rad + 0.1;
msg.payload = (Math.sin (rad)+1)/2*100;
context.set ("rad", rad);
return msg;
myname/#
з QoS1myname/device1/random
оновлюєтьсяmyname/client1/status
рівний online
У налаштуваннях підключення вказане повідомлення останньої волі LWT. Воно відправиться тільки при некоректному обриву з’єднання. Для імітації такого обриву можна тимчасово відключити мережу, після чого завершити роботу Node-RED, щоб при появі мережі він не обновив статус. Саме після підключення мережі при вимкнутому Node-RED за допомогою MQTT Explorer можна буде визначити, повідомлення останньої волі, яке має бути рівним offline (break)
. Слід зауважити, що після останнього відправленого вузлом MQTT-out
повідомлення повинно пройти щонайменше 1,5 часу Keep alive time
, який дорівнює 60 секунд.
CTRL+C
в консолі, з якої він запускався)myname/client1/status
, десь через хвилину-півтори він повинен стати в значення offline (break)
myname/client1/status
повинен знову стати online
При знятій опції Use Clean Session
, що значить Persisten connection
, а також QoS>=1 і постійному ID-клієнта, повідомлення що не були отримані абонентом під час його відключення, зберігаються в буфері брокера. Після повторного підключення він повертає їх клієнтові.
MQTT-broker
що відповідає з 2-ге підключення (до якого підключений MQTT-in
) і деактивуйте вузол (відключіть Enable
)Даний пункт виконується за бажанням.
Для виконання даної частини практичного завдання необхідно мати пристрій з Андроїдом або iOS. Даний пристрій буде використовуватися як мобільний клієнт MQTT.
Наприклад, для застосунку “IoT MQTT Panel” це робиться в розділі Connection, де означуються ті самі налаштування, що і в попередніх пунктах. Додатково також треба добавити Device.