TI40

Технології індустрії 4.0. Лабораторний практикум. Автор і лектор: Олександр Пупена

<- до лаборних робіт на основну сторінку курсу
   

Лабораторна робота №2. Протоколи IoT: MQTT

1. Використання тестових клієнтів та брокерів для зв’язку по MQTT

Одна із областей застосування MQTT – це обмін між пристроями та програмами, що підключені до Інтернет. У даному лабораторному занятті використовується загальнодоступні брокери, наприклад test.mosquitto.org або mqtt.eclipse.org. Слід звернути увагу, що їх використання є безкоштовним, але вони не гарантують безперебійну роботу сервісу, тому їх не слід використовувати для реальних рішень, що потребують надійних з’єднань та цілодобового використання. За необхідності використання надійних сервісів, слід користуватися іншими брокерами власними, або хмарними.

Також в роботі використовуються тестові клієнти:

1.1.Завантаження, встановлення та запуск MQTT Explorer

рис.3.1. Налаштування MQTT Explorer

Після з’єднання Ви побачите усі теми, які публікуються на брокері.

рис.3.2. Фільтрування системних повідомлень на брокері

рис.3.3. Деталізація переліку повідомлень

1.2. Робота з HiveMQ Вебсокет-клієнтом

$SYS/broker/clients/connected

У випадку відсутності зв’язку з брокером зробіть перевірку на test.mosquitto.org.

1.3. Публікація і підписка для власного повідомлення

myname/device1/val

де myname - це якесь придумане ім’я, яке має бути унікальне в адресному просторі брокера

1.4. Відкриття сторінки з варіантом на тестовому сервері

рис.2. Вибір вкладки з варіантом та панель для варіанту

рис.3.4. Вигляд сторінки з варіантом на тестовому сервері

1.5. Перевірка підключення до тестового варіанту

1.6. Зміна даних на тестовому сервері через MQTT

2. Зв’язок Node-RED з іншими пристроями по MQTT

2.1. Налаштування отримання даних по MQTT

рис.5. Налаштування отримання даних по MQTT.

рис.3.5. Налаштування брокеру в MQTT

У випадку відсутності зв’язку з брокером зробіть спробу пізніше.

2.2. Тестування отримання даних по MQTT

2.3. Тестування відправки даних по MQTT

Програма та зовнішній інтерфейс матиме вигляд приблизно як на рис. 3.6. Для відображення підписів використовуйте теми а для формату відображення чисел ангулярні фільтри.

рис.6. Вигляд фрагменту програми Node-RED та локального інтерфейсу.

рис.3.6. Фрагмент програми в Node-RED для роботи з MQTT

2.4. Генерування синусоїди

рис.7. Вигляд фрагменту програми Node-RED для формування синусоїди.

рис.3.7. Фрагмент програми для генерування синусоїди

2.5. Реалізація “коротко-замкнутого” з’єднання видавця і абонента в Node-RED

Для тестування можливостей MQTT в Node-RED рекомендується зав’язати видавця з абонентом у тому самому потоці але з різними підключеннями.

рис.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;

2.6. Перевірка роботи LWT-повідомлення

У налаштуваннях підключення вказане повідомлення останньої волі LWT. Воно відправиться тільки при некоректному обриву з’єднання. Для імітації такого обриву можна тимчасово відключити мережу, після чого завершити роботу Node-RED, щоб при появі мережі він не обновив статус. Саме після підключення мережі при вимкнутому Node-RED за допомогою MQTT Explorer можна буде визначити, повідомлення останньої волі, яке має бути рівним offline (break). Слід зауважити, що після останнього відправленого вузлом MQTT-out повідомлення повинно пройти щонайменше 1,5 часу Keep alive time, який дорівнює 60 секунд.

2.7. Перевірка роботи черги повідомлень для QoS=1

При знятій опції Use Clean Session , що значить Persisten connection, а також QoS>=1 і постійному ID-клієнта, повідомлення що не були отримані абонентом під час його відключення, зберігаються в буфері брокера. Після повторного підключення він повертає їх клієнтові.

3. Зв’язок MQTT-клієнта з мобільного телефону

Даний пункт виконується за бажанням.

Для виконання даної частини практичного завдання необхідно мати пристрій з Андроїдом або iOS. Даний пристрій буде використовуватися як мобільний клієнт MQTT.

3.1. Встановлення MQTT Client для мобільного телефону

3.2. Добавлення з’єднання з MQTT брокером

Наприклад, для застосунку “IoT MQTT Panel” це робиться в розділі Connection, де означуються ті самі налаштування, що і в попередніх пунктах. Додатково також треба добавити Device.

3.3. Добавлення та тестування інтерфейсу користувача

Питання до захисту

  1. Розкажіть про принципи функціонування протоколу MQTT.
  2. Які можливості утиліти MQTT Explorer використовувалися в даній лабораторній роботі?
  3. Які можливості сервісу HiveMQ Вебсокет-клієнту використовувалися в даній лабораторній роботі?
  4. Розкажіть про принципи публікації і підписки в MQTT. Як це налаштовується в клієнтах?
  5. Розкажіть про принципи використання MQTT в Node-RED.
  6. Розкажіть про принципи функціонування сервісу LWT в MQTT. Як цей сервіс використовувався в лабораторній роботі?
  7. Розкажіть про призначення QoS.
  8. Розкажіть про принципи функціонування HTTP API та REST.
  9. Які відкриті сервіси HTTP API і як використовувалися в даній лабораторній роботі?