# Работа с MQTT
## Установка ПО
Самым простым клиентом для работы с MQTT, пожалуй, будет **MQTT.fx**. Скорее всего он уже установлен на компьютерах у нас в вычислительном зале, и можно перейти к следующему пункту,
но если нет, то **MQTT.fx** можно скачать с . Для наших компьютеров понадобится 64-разрядный пакет для Debian.

Скачиваем его в каталог **Загрузки**, после чего запускаем приложение **Terminal** (с клавиатуры это можно сделать комбинацией клавиш **Ctrl**+**Alt**+**T**)

В терминале набераем (для переключения на русский язык и обратно используется сочетание клавиш **Win**+**Пробел**):
```sh
sudo dpkg -i ~/Загрузки/mqttfx-1.7.1-64bit.deb
```
Во время ввода этой команды вас попросят ввести пароль – его вам скажет преподаватель.
> ![Важно][danger] ***Обратите внимание, что при вводе пароля ни он, ни какие-то другие символы (например, звездочки) не отображаются!***
## Настройка подключения
Далее, запускаем **MQTT.fx**. Теперь необходимо настроить подключения к серверу, для чего следует нажать на иконку с шестерёнкой.

Далее введём информацию о MQTT-брокере:
1. Добавить новое соединение
2. Указать его название (например, **IoT Course**)
3. Ввести имя сервера (предоставит преподаватель)
4. Ввести порт на сервере (предоставит преподаватель)
5. Сгенерировать уникальный идентификатор клиента
6. Переключиться на ввод логина и пароля

7. Ввести логин (предоставит преподаватель)
8. Ввести пароль (предоставит преподаватель)
9. Сохранить изменения нажатием кнопки **ОК**.

Теперь убедимся, что выбран созданный профиль (1), и подключимся к серверу нажатием кнопки **Connect** (2)

Если всё настроено правильно, и подключение к брокеру установлено, то загорится зелёный индикатор

## Публикация и подписка
Переключимся на вкладку **Subscribe** (1), оформим подписку на все топики. Для этого в текстовое поле (2) введём символ **#** и нажмём **Subscribe** (3)

После этого мы станем получать данные с реального сервера. В верхней части (1) приложения можно видеть сами топики,
а выбрав один из них, в нижней части (2) – сами сообщения

Для публикации сообщений перейдём во вкладку **Publish** (1). Зададим имя топика (2), введём текст для отправки (3)
и нажмём кнопку **Publish** (4).
Давайте в топик `summer_eecs/ваша_фамилия` отправим сообщение «My UserID is @@@@», только вместо `@@@@` укажите ваш идентификатор (**UserID**), который вам выдал преподаватель

Теперь вернемся на вкладку **Subscribe** (1) и проверим, что действительно появился такой топик, и в нём находится наше сообщение (3).

> ![Важно!][danger] ***Если вы не видите своё сообщение, то прокрутите список топиков.
> Мы работаем с сервером, на который приходит много данных, и ваше сообщение где-то среди них.***
Чтобы всё-таки не терять свои сообщения среди других, отпишемся (**Unsubscribe**) от приема всех сообщений.

Далее мы будем работать только с сообщениями топика `summer_eecs` и всех его субтопиков, поэтому имеет смысл подписаться только на них.

Дополнительно можно ещё подписаться на топик `sensor/#`. В результате мы сможем наблюдать за показаниями нескольких датчиков, установленных у нас в университете.
Однако следует помнить, что получение лишних данных может затруднить их восприятие, так как сообщения с датчиков будут приходить достаточно часто.
Если вам эти данные не нужны – отпишитесь от них.
[**<<< Назад**](iot/summer-2021/arduino) | [**Далее >>>**](iot/summer-2021/led-lamp)
[danger]: /assets/images/iot-academy/danger.png