2. Начало работы
Библиотека должна работать на любой Arduino-совместимой платформе, тестировалась на AVR, ESP8266 v3.1.2, ESP32 v2.0.14 (dev, S2, S3, C3). На старых версиях esp32 (ниже 2.x) не работает!
Ссылки для менеджера плат. Рекомендуются актуальные версии:
- ESP8266 v2.7+ https://arduino.esp8266.com/stable/package_esp8266com_index.json
- ESP32 v2+ https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Мой .ini файл для всех платформ. Указана платформа, файловая система и все нужные зависимости:
platformio.ini
[env:d1_mini]
framework = arduino
monitor_speed = 115200
platform = espressif8266
board = d1_mini
upload_speed = 921600
monitor_filters = esp8266_exception_decoder, default
build_type = debug
board_build.filesystem = littlefs
lib_deps =
knolleary/PubSubClient
links2004/WebSockets
;GyverLibs/GyverHub
https://github.com/GyverLibs/GyverHub.git
GyverLibs/StringUtils
GyverLibs/Pairs
GyverLibs/GSON
[env:esp32dev]
framework = arduino
monitor_speed = 115200
platform = espressif32
board = esp32dev
upload_speed = 921600
board_build.filesystem = littlefs
lib_deps =
knolleary/PubSubClient
links2004/WebSockets
;GyverLibs/GyverHub
https://github.com/GyverLibs/GyverHub.git
GyverLibs/StringUtils
GyverLibs/Pairs
GyverLibs/GSON
[env:esp32cam]
framework = arduino
monitor_speed = 115200
platform = espressif32
board = esp32cam
board_build.mcu = esp32
upload_speed = 921600
board_build.f_cpu = 240000000L
board_build.filesystem = littlefs
lib_deps =
knolleary/PubSubClient
links2004/WebSockets
;GyverLibs/GyverHub
https://github.com/GyverLibs/GyverHub.git
GyverLibs/StringUtils
GyverLibs/Pairs
GyverLibs/GSON
[env:esp32-c3]
framework = arduino
monitor_speed = 115200
platform = espressif32
board = esp32dev
board_build.mcu = esp32c3
upload_speed = 921600
board_build.f_cpu = 80000000L
lib_deps =
knolleary/PubSubClient
links2004/WebSockets
;GyverLibs/GyverHub
https://github.com/GyverLibs/GyverHub.git
GyverLibs/StringUtils
GyverLibs/Pairs
GyverLibs/GSON
[env:s2_mini]
framework = arduino
monitor_speed = 115200
platform = espressif32
board = lolin_s2_mini
board_build.mcu = esp32s2
board_build.f_cpu = 240000000L
lib_deps =
knolleary/PubSubClient
links2004/WebSockets
;GyverLibs/GyverHub
https://github.com/GyverLibs/GyverHub.git
GyverLibs/StringUtils
GyverLibs/Pairs
GyverLibs/GSON
[env:nano328]
framework = arduino
monitor_speed = 115200
platform = atmelavr
board = nanoatmega328new
lib_deps =
;GyverLibs/GyverHub
https://github.com/GyverLibs/GyverHub.git
GyverLibs/StringUtils
GyverLibs/Pairs
GyverLibs/GSON
Для работы GyverHub необходимы библиотеки:
При установке GyverHub из реестра все библиотеки установятся автоматически!
- Устройство - микроконтроллер (далее МК) с программой на базе библиотеки GyverHub. МК является сервером, к которому подключаются клиенты
- Клиент - сайт или приложение GyverHub, которое подключено к устройству
- Имя сети (префикс) - уникальное имя сети "клиент-устройство", используется клиентом для поиска устройств и по сути является паролем, без которого не получится обнаружить устройство
Библиотека имеет минималистичный API: для начала работы достаточно создать объект GyverHub, вызвать у него begin()
в блоке setup и вызывать tick()
в блоке loop. Также нужно создать функцию вида void build(gh::Builder& b)
и подключить её через hub.onBuild()
- в ней будет собираться панель управления.
#include <GyverHub.h>
GyverHub hub("MyDevices", "ESP8266", ""); // имя сети, имя устройства, иконка
// билдер
void build(gh::Builder& b) {
}
void setup() {
// подключение к WiFi..
// настройка MQTT/Serial/Bluetooth..
hub.onBuild(build); // подключаем билдер
hub.begin(); // запускаем систему
}
void loop() {
hub.tick(); // тикаем тут
}
Иконки Font Awesome v5 Solid, бесплатный пак:
- Список иконок
- Вставлять в "строку" сам символ (глиф)
""
или его код"f6ad"
- Пустая строка
""
- отключить иконку
Для подключения к WiFi роутеру можно использовать стандартный код для ESP:
void setup() {
WiFi.mode(WIFI_STA);
WiFi.begin("SSID", "PASS");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// ...
}
Система может работать и с ESP в режиме точки доступа:
void setup() {
WiFi.mode(WIFI_AP);
WiFi.softAP("My Device");
// ...
}
Для работы через встроенный MQTT нужно указать хост (адрес или IP) и TCP порт, опционально логин-пароль и qos/retain:
config(const String& host, uint16_t port, const String& login = "", const String& pass = "", uint8_t qos = 0, bool ret = 0)
void setup() {
// настройка на сервер, установленный в приложении по умолчанию
hub.mqtt.config("test.mosquitto.org", 1883);
// другие примеры
hub.mqtt.config(IPAddress(12, 34, 56, 78), 1883);
hub.mqtt.config("m8.wqtt.ru", 13448, "user", "pass");
}
Библиотека имеет встроенную поддержку Serial/Bluetooth в виде Arduino Stream. К библиотеке можно подключить один Stream-объект, который обеспечивает связь. В большинстве случаев это будет Serial
или SoftwareSerial
, к которому в случае с Bluetooth подключен Bluetooth модуль по UART. В программе нужно указать его и тип связи, который обеспечивается подключением:
void setup() {
hub.stream.config(&Serial, gh::Connection::Serial);
// ...
}
SoftwareSerial bt(3, 4);
void setup() {
hub.stream.config(&bt, gh::Connection::Bluetooth);
// ...
}