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







