# Работа с MQTT ## Установка ПО Самым простым клиентом для работы с MQTT, пожалуй, будет **MQTT.fx**. Скорее всего он уже установлен на компьютерах у нас в вычислительном зале, и можно перейти к следующему пункту, но если нет, то **MQTT.fx** можно скачать с <https://jensd.de/apps/mqttfx/1.7.1/>. Для наших компьютеров понадобится 64-разрядный пакет для Debian. ![mqttfx_download](/assets/images/iot/mqttfx/mqttfx_download.png) Скачиваем его в каталог **Загрузки**, после чего запускаем приложение **Terminal** (с клавиатуры это можно сделать комбинацией клавиш **Ctrl**+**Alt**+**T**) ![mqttfx_saveas](/assets/images/iot/mqttfx/mqttfx_saveas.png) В терминале набераем (для переключения на русский язык и обратно используется сочетание клавиш **Win**+**Пробел**): ```sh sudo dpkg -i ~/Загрузки/mqttfx-1.7.1-64bit.deb ``` Во время ввода этой команды вас попросят ввести пароль – его вам скажет преподаватель. > ![Важно][danger] ***Обратите внимание, что при вводе пароля ни он, ни какие-то другие символы (например, звездочки) не отображаются!*** ## Настройка подключения Далее, запускаем **MQTT.fx**. Теперь необходимо настроить подключения к серверу, для чего следует нажать на иконку с шестерёнкой. ![mqttfx_properties](/assets/images/iot/mqttfx/mqttfx_properties.png) Далее введём информацию о MQTT-брокере: 1. Добавить новое соединение 2. Указать его название (например, **IoT Course**) 3. Ввести имя сервера (предоставит преподаватель) 4. Ввести порт на сервере (предоставит преподаватель) 5. Сгенерировать уникальный идентификатор клиента 6. Переключиться на ввод логина и пароля ![mqttfx_broker](/assets/images/iot/mqttfx/mqttfx_broker.png) 7. Ввести логин (предоставит преподаватель) 8. Ввести пароль (предоставит преподаватель) 9. Сохранить изменения нажатием кнопки **ОК**. ![mqttfx_user](/assets/images/iot/mqttfx/mqttfx_user.png) Теперь убедимся, что выбран созданный профиль&nbsp;(1), и подключимся к серверу нажатием кнопки **Connect**&nbsp;(2) ![mqttfx_connect](/assets/images/iot/mqttfx/mqttfx_connect.png) Если всё настроено правильно, и подключение к брокеру установлено, то загорится зелёный индикатор ![mqttfx_connected](/assets/images/iot/mqttfx/mqttfx_connected.png) ## Публикация и подписка Переключимся на вкладку **Subscribe**&nbsp;(1), оформим подписку на все топики. Для этого в текстовое поле&nbsp;(2) введём символ **#** и нажмём **Subscribe**&nbsp;(3) ![mqttfx_subscribe](/assets/images/iot/mqttfx/mqttfx_subscribe.png) После этого мы станем получать данные с реального сервера. В верхней части&nbsp;(1) приложения можно видеть сами топики, а выбрав один из них, в нижней части&nbsp;(2) – сами сообщения ![mqttfx_sub_data](/assets/images/iot/mqttfx/mqttfx_sub_data.png) Для публикации сообщений перейдём во вкладку **Publish**&nbsp;(1). Зададим имя топика&nbsp;(2), введём текст для отправки&nbsp;(3) и нажмём кнопку **Publish**&nbsp;(4). Давайте в топик `summer_eecs/ваша_фамилия` отправим сообщение «My UserID is @@@@», только вместо `@@@@` укажите ваш идентификатор (**UserID**), который вам выдал преподаватель ![mqttfx_pub](/assets/images/iot/mqttfx/mqttfx_pub.png) Теперь вернемся на вкладку **Subscribe**&nbsp;(1) и проверим, что действительно появился такой топик, и в нём находится наше сообщение&nbsp;(3). ![mqttfx_check_userid](/assets/images/iot/mqttfx/mqttfx_check_userid.png) > ![Важно!][danger] ***Если вы не видите своё сообщение, то прокрутите список топиков. > Мы работаем с сервером, на который приходит много данных, и ваше сообщение где-то среди них.*** Чтобы всё-таки не терять свои сообщения среди других, отпишемся (**Unsubscribe**) от приема всех сообщений. ![mqttfx_unsubscribe](/assets/images/iot/mqttfx/mqttfx_unsubscribe.png) Далее мы будем работать только с сообщениями топика `summer_eecs` и всех его субтопиков, поэтому имеет смысл подписаться только на них. ![mqttfx_subscribe_eecs](/assets/images/iot/mqttfx/mqttfx_subscribe_eecs.png) Дополнительно можно ещё подписаться на топик `sensor/#`. В результате мы сможем наблюдать за показаниями нескольких датчиков, установленных у нас в университете. Однако следует помнить, что получение лишних данных может затруднить их восприятие, так как сообщения с датчиков будут приходить достаточно часто. Если вам эти данные не нужны – отпишитесь от них. [**<<< Назад**](iot/summer-2021/arduino)&nbsp;|&nbsp;[**Далее >>>**](iot/summer-2021/led-lamp) [danger]: /assets/images/iot-academy/danger.png