Начало работы

Библиотека работает на актуальных версиях SDK. Не рекомендуется ставить версии ниже указанных. Ссылки для менеджера плат:

Установка библиотеки

Библиотека ещё не вышла в релиз: скачать актуальную бета-версию можно из репозитория - прямая ссылка на архив. Документация всегда соответствует текущей версии на гитхаб!

  • Вручную: распаковать и положить в Документы/Arduino/libraries/ (Windows)

  • Arduino IDE: автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив

Зависимости

Для работы GyverHub нужно установить ещё несколько библиотек:

Синхронные и асинхронные: в асинхронной версии 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 рублей.

Минимальный код

#include <Arduino.h>
#include <GyverHub.h>

#define AP_SSID "AP_SSID"
#define AP_PASS "AP_PASS"

#define MQTT_PORT 13448 // Порт MQTT
#define MQTT_USR_NAME "USER_NAME" // Имя пользователя MQTT брокера
#define MQTT_USR_PASS "USR_PASS" // Пароль пользователя MQTT брокера

GyverHub hub("MyDevices", "ESP8266", "");  // Префикс, имя устройства, иконка

void setup() {
    Serial.begin(115200); // Инициализация Serial для общения по UART
    WiFi.mode(WIFI_STA);
    WiFi.begin(AP_SSID, AP_PASS);
    Serial.println();
    while (WiFi.status() != WL_CONNECTED) { // Ждём пока подключимся к WiFi
        delay(500);
        Serial.print(".");
    }
    Serial.println();
    Serial.println(WiFi.localIP()); // Печать локального IP адреса
    hub.setupMQTT("m8.wqtt.ru", MQTT_PORT, MQTT_USR_NAME, MQTT_USR_PASS); // Настройка MQTT
    hub.onBuild(build); // Подключаем билдер
    hub.begin(); // Запускаем систему
}

void loop() {
    hub.tick(); // Обязательно тикаем тут
}

// Билдер интерфейса
void build() {
}

После запуска в монитор порта выводится IP адрес, если подключение к интернету есть, а в брокере, на странице журнала работы появляется сообщение о подключении нового клиента. Если этого сообещния нет, то порт в вашей сети блокируется.

2023-09-17 14:21:22: New connection from 5.141.102.183 on port 13994.
2023-09-17 14:21:22: New client connected from 5.141.102.183 as DEV-283e17 (c1, k15, u'u_WCIL7F').

Настройка сайта/приложения Настройка MQTT соединения

Нажать шестерёнку справа, настроить WQTT.

После ввода данных нажать Connect.

В консоли, если подключение не выходит отображается ошибка, только с другим портом. WebSocket connection to 'wss://m8.wqtt.ru:13997/mqtt' failed

При соединении приложения с брокером MQTT в шапке приложения начинает отображаться иконка с глобусом, а это значит, что всё нормально.

Если вы поменяли в строке 11 GyverHub hub("MyDevices", "ESP8266", ""); префикс устройства, тогда вам необходимо в указать этот префикс в разделе Settings, в поле Prefix.

Далее нажать на лупу в самом первом пункте настроек (поле Search), устройство должно появиться в списке.

Last updated