[sape_tizer]
Чт. Июн 1st, 2023

Что и как строить на земельном участке или обо всем понемногу

Все о инструментах, строительстве, работах, АРДУИНО, электрика, электроника и многое другое

Управление курятником через интернет. Часть 2. MQTT-сервер, настройка.

Снова всех приветствую на страницах моего сайта. На предыдущей странице я постарался описать максимально доступно какие проблемы и их возможные решения будут при создании устройства для управления курятником. С деталями мы уже определились, переходим к настройке MQTT- сервера. Чтоб долго не разжевывать как работает данная технология объясню проще. Например у вас есть устройство А- контроллер с датчиками и модулями (еще давно я постарался распределить понятия «датчики» и «модули», т.е. датчики- это откуда приходит информация (температура, давление, кнопки и т.д.) на контроллер,  а модули- куда уходит информация, т.е. в основном это исполнительные механизмы (индикаторы, драйверы двигателей, реле и т.д.)), он подключается к MQTT- серверу. Сервер транслирует все данные и состояния которые он получил от устройства А на все устройства подключенные к этому же серверу. Например у вас есть планшет В и телефон С с установленным ПО (программным обеспечением) для мониторинга и управления устройством А. Выходит что при изменении любого состояния на А отправляется информация на сервер и уже оттуда она рассылается на В и С. Такая же ситуация происходит и с сигналами управления от В и С в сторону А. Т.е. сигнал с устройства, например, В отправляется на сервер и уже оттуда рассылается на А и С. Вы спросите зачем такой длинный путь- не проще ли сразу посылать на устройство сигнал и получать данные обратно. Не все так просто. Я не буду вдаваться в технологию построения сети Интернет но просто поверьте- это довольно громоздко и требует достаточно глубоких знаний для пробрасывания канала из сети Интернет к вашему внутреннему устройству. MQTT- сервер позволяет довольно быстро обойтись без костылей настройки не только ваших телефонов и контроллеров, но еще и роутеров. Хотя буквально на днях у меня с другом разгорелся спор по поводу целесообразности создания внутренней системы управления. Т.е. можно «залить» в прошивку ESP8266 HTML- страничку, и уже ее отображать на внутренних устройствах. Теперь даже при пропадании сети Интернет и, соответственно, MQTT- сервера вы все равно сможете управлять контроллером! Правда только на уровне внутренней сети, т.е. на уровне роутера. Через интернет вы управлять уже не сможете. Пока я бьюсь с тем чтобы присвоить ESP статичный IP-адрес. Чтобы вы поняли то в большинстве роутеров стоит динамический DHCP- автоматическая раздача IP адресов подключенным устройствам. Это и хорошо для обыкновенного пользователя той же сети WiFi и плохо для тех кто хочет подключить что то напрямую. Например я присвоил устройству IP 192.168.10.10 и оно подключается к сети где уже есть такой адрес. Возникает ошибка. При этом оба устройства становятся недоступными т.к. роутер не знает что ему делать с одинаковыми IP. Кроме того, если оставить динамический DHCP то IP адрес страницы управления контроллером будет постоянно изменяться, т.е. получается очень неудобно каждый раз искать устройство по IP- адресу. Можно, конечно, жестко привязать IP к MAC- адресу… Но это надо делать настройки в роутере что не есть совсем хорошо. При замене ESP придется опять лезть в роутер и переназначать MAC- адрес. Но это все лирика, переходим дальше по теме.

Как и сказал мой друг в отзыве на предыдущей странице- На cloudmqtt.com больше нет бесплатных тарифов. Тем кто хочет повыбирать из поставщиков MQTT- технологий милости прошу на сайт моего друга- https://kotyara12.ru . У меня же стоит cloudmqtt.com и, наверное, я вместе с вами попробую зарегистрировать еще один MQTT- сервер на clusterfly.ru. Регистрация происходит через соц. сети, а также Яндекс и Гугл аккаунты. После регистрации у вас уже готовый MQTT- сервер! Проще чем на cloudmqtt.com! Конечно функционал сайта здорово урезан по сравнению с cloudmqtt.com но самое главное- у вас есть бесплатный MQTT- сервер. Остальное- решаемо! Теперь давайте определимся с топиками. Топик- это заголовок на который вы будете отправлять информацию и с чего вы будете получать данные. Хочу заметить что  srv2.clusterfly.ru поддерживает топики, а сервер srv1.clusterfly.ru— нет. На одного пользователя можно завести сразу несколько контроллируемых сооружений. Например у вас логин user_1111, вы можете разбить показания по топикам, например user_1111/home — устройство управления домом, user_1111/chicken- управление курятником,  user_1111/garazh- управление и контроль состояния гаража и т.д. Затем добавляете опять / и описываете требуемое устройство. Например user_1111/chicken/lamp — управление освещением в курятнике, user_1111/chicken/lamp_state- состояние освещения и т.д.  Еще проще представить это так. У вас (user_1111) есть объект дом (home), в котором есть лампочка (lamp). Запишем это как user_1111/home/lamp. В том же доме есть розетка (connect), это уже user_1111/home/connect. Кроме того есть вентилятор (wind). Пишем как user_1111/home/wind. Думаю принцип понятен.

Давайте попробуем сделать небольшую программу для более понятного объяснения. Что удивительно- можно вообще обойтись на данном этапе без программирования на компьютере. Все будем делать в приложении для телефона. Я буду использовать программу MQTT Dash. Вы можете использовать любую другую, принцип все равно остается понятен. Итак устанавливаем программу MQTT Dash на ваше любое Android- устройство.

Смотрим данные вашей учетной записи. Запоминаем, а еще лучше- записываем. Пароль показывается только один раз, потом его придется обновлять и при обновлении он изменится. Если вы не используете протокол ОТА то вам придется снимать ваш ESP- модуль и изменять прошивку. Отнеситесь к этому серьезно.

Данные учетной записи
Данные учетной записи

Открываем его. У меня уже сделан сервер так что не обращайте внимание. У вас при первом запуске будет чистый экран.

Выбор MQTT сервера
Выбор MQTT сервера

Жмем кнопочку + в верхнем правом углу и вводим нужные данные. Обратите внимание что Андроид сам добавляет пробелы после точек в адресе. Поэтому не забудьте их удалить после точек иначе с сервером просто не соединитесь и будет возникать ошибка соединения.  Сохраняем данные.

Настройка сервера MQTT
Настройка сервера MQTT

Кликаем по строке с заданным именем.

Выбор MQTT сервера
Выбор MQTT сервера

Появляется пустой экран. Опять жмем кнопку +.

Страница сервера
Страница сервера

Давайте выберем Диапазон/прогресс, так будет интереснее.

Добавление типа отображения данных
Добавление типа отображения данных

Производим настройки типа отображения. Обратите внимание что названии топика ОБЯЗАТЕЛЬНО должно присутствовать имя пользователя. Иначе работать не будет. Сохраняем данные.

Настройка типа отображения данных
Настройка типа отображения данных
Переходим на страницу управления MQTT в раздел Web-client [SRV.2] т.к. мы используем знак «/» для разделения топиков. Вводим Пароль. Появляется Вот такой интерфейс. Вводим название Топика уже без имени пользователя. В данном случае- lamp, и нужное значение, я указал 78. Жмем отправить.

 

Отправка сообщения в топик
Отправка сообщения в топик

В приложении MQTT Dash вы должны увидеть такую картину. Передавая значения со страницы управления MQTT вы увидите что область заполняется в соответствии с заданными данными.

Тест сообщения
Тест сообщения

Ничего сложного нет, правда? Вот так и работает MQTT сервер. Данные будут обновляться на всех устройствах, подключенных таким образом к данному топику. Кроме того можно осуществлять еще и обратную связь. Т.е. вы указываете значение кликая по кнопке «Состояние» в MQTT Dash, указываете значение и… Устройство будет работать с заданными данными. Например данный пример можно использовать для зажигания лампы от 0 до 100 сек. Зачем это надо- не знаю. Но это как пример. Думаю вы поняли принцип работы MQTT протокола буквально на пальцах. Спасибо за внимание. В следующем уроке мы уже точно определимся с алгоритмом работы устройства и начнем писать собственно само приложение.

<< Предыдущая страница- Часть 1. Введение