Начало работы
Библиотека работает на актуальных версиях SDK. Не рекомендуется ставить версии ниже указанных. Ссылки для менеджера плат:
ESP32 v2+ https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
НЕ РАБОТАЕТ НА SDK 2.0.8!!!
Если AsyncWebSocket не компилируется на ESP32C3:
AsyncWebSocket.cpp
строка ~832 заменитьreturn IPAddress(0U)
->return IPAddress()
Установка библиотеки
Библиотека ещё не вышла в релиз: скачать актуальную бета-версию можно из репозитория - прямая ссылка на архив. Документация всегда соответствует текущей версии на гитхаб!
Вручную: распаковать и положить в Документы/Arduino/libraries/ (Windows)
Arduino IDE: автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
Зависимости
Для работы GyverHub нужно установить ещё несколько библиотек:
Для ESP8266/32
Для синхронной работы:
Для асинхронной работы:
Синхронные и асинхронные: в асинхронной версии GyverHub используются библиотеки на базе AsyncTCP. Они "тяжелее", но работают асинхронно и не тормозят работу программы в отличие от синхронных. В то же время на синхронных работа будет более стабильной, по крайней мере мне так показалось.
Основные понятия
Устройство
Под устройством понимается прибор/девайс/самоделка на базе микроконтроллера с программой, включающей библиотеку GyverHub. Для настройки устройства в прогармме нужно указать несколько параметров:
Префикс сети - уникальное имя вашей сети, должно быть одинаковым у всех устройств и у приложения, чтобы они могли общаться друг с другом. С этого префикса также будут начинаться MQTT топики, что позволяет относительно безопасно пользоваться системой даже на публичных MQTT брокерах. Только английские буквы, цифры, без пробелов
Имя - название устройства, которое будет отображаться в списке устройств в приложении
Иконка - иконка рядом с названием в списке устройств. Иконки Font Awesome v5 Solid Free:
WS (WebSocket)
WebSocket - это сетевой протокол связи, в рамках системы GyverHub используется для связи устройства и приложения в локальной сети, т.е. без использования связи с Интернет:
Устройство и смартфон/компьютер подключены к одному роутеру
Смартфон/компьютер подключен к устройству, работающему как точка доступа
MQTT
MQTT позволяет управлять своим устройством через интернет (из другого города или любой другой точки планеты). GyverHub работает с внешним брокером. Для использования MQTT нужно выбрать брокера и указать хост (или его IP адрес) и порт, опционально логин + пароль, см. документацию. Требования к MQTT брокеру:
Наличие Wildcards (топики с
/#
)Наличие незащищённого TCP (для устройства)
Наличие Websocket с TLS (для приложения)
Пароль от MQTT, как и все остальные настройки сайта/приложения, хранится исключительно в браузере, т.е. в памяти компьютера/смартфона (Local storage)
Настройка для сервиса WQTT.ru
Регистрируемся в брокере.
В рамках подписки пользователь получает свой собственный MQTT-брокер в виде отдельного экземпляра Mosquitto на сервере, который обслуживает несколько пользователей. Допустимое количество топиков и соединений искусственно не ограничено. Все серверы постоянно контролируются на предмет доступности и производительности.
1 месяц - бесплатно, а 1 год - 299 рублей.
Минимальный код
После запуска в монитор порта выводится IP адрес, если подключение к интернету есть, а в брокере, на странице журнала работы появляется сообщение о подключении нового клиента. Если этого сообещния нет, то порт в вашей сети блокируется.
Настройка сайта/приложения Настройка MQTT соединения
Нажать шестерёнку справа, настроить WQTT.
После ввода данных нажать Connect.
В консоли, если подключение не выходит отображается ошибка, только с другим портом. WebSocket connection to 'wss://m8.wqtt.ru:13997/mqtt' failed
При соединении приложения с брокером MQTT в шапке приложения начинает отображаться иконка с глобусом, а это значит, что всё нормально.
Если вы поменяли в строке 11 GyverHub hub("MyDevices", "ESP8266", "");
префикс устройства, тогда вам необходимо в указать этот префикс в разделе Settings
, в поле Prefix
.
Далее нажать на лупу в самом первом пункте настроек (поле Search
), устройство должно появиться в списке.
Last updated