Технології індустрії 4.0. Лабораторний практикум. Автор і лектор: Олександр Пупена
| <- до лаборних робіт | на основну сторінку курсу |
|---|---|
Одна із областей застосування MQTT – це обмін між пристроями та програмами, що підключені до Інтернет. У даному лабораторному занятті використовується загальнодоступні брокери, наприклад test.mosquitto.org або mqtt.eclipse.org. Слід звернути увагу, що їх використання є безкоштовним, але вони не гарантують безперебійну роботу сервісу, тому їх не слід використовувати для реальних рішень, що потребують надійних з’єднань та цілодобового використання. За необхідності використання надійних сервісів, слід користуватися іншими брокерами власними, або хмарними.
Також в роботі використовуються тестові клієнти:
mqtt.eclipse.org, подивіться на налаштування і натисніть Connect.test.mosquitto.org
рис.3.1. Налаштування MQTT Explorer
Після з’єднання Ви побачите усі теми, які публікуються на брокері.
$SYS для відображення тільки системних повідомлень
рис.3.2. Фільтрування системних повідомлень на брокері
$SYSclients/connected, який показує кількість підключених клієнтів. У деталізації History Ви побачите перелік усіх повідомлень, які були отримані з початку сеансу а також їх значення у вигляді графіку.
рис.3.3. Деталізація переліку повідомлень
Disconnect. Зайдіть в налаштування Advanced. Подивіться налаштування: у списку тем вказано фільтр підписки на усі теми. На кожну тему підписка вказана з QoS=0test.mosquitto.orgAdd 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.orgAdvanced, де:
NUFT TI4/#BackConnect для підключення до брокераRAWPublish.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 рекомендується зав’язати видавця з абонентом у тому самому потоці але з різними підключеннями.
Messagespupenasan змінюєте на власну унікальну назву типу myname , який був вибраний Вам в п.1.3MQTT-in та MQTT-out пропишіть різні підключення Client1 та Client2Inject) задайте рівним 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.