You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Библиотека для создания простого веб-интерфейса настроек на esp8266/esp32
11
-
- Веб-приложение весит всего 7кб и вшивается в программу в бинарном gzip виде, никакой возни с файлами
11
+
- Веб-приложение весит около 10кб и вшивается в программу в бинарном gzip виде без возни с файлами
12
12
- Удобный билдер панели управления из скетча
13
13
- Десяток типовых виджетов с возможностью объединения в группы и вложенные меню
14
+
- Система авторизации с разными правами для авторизованных юзеров и гостей
15
+
- Файловый менеджер и OTA (обновление по воздуху)
14
16
- Интеграция с библиотекой [GyverDB](https://github.com/GyverLibs/GyverDB) для полностью автоматического хранения данных
15
17
- Компактный бинарный протокол связи
16
18
- Легко адаптируется под любую библиотеку HTTP сервера, из коробки реализовано три версии: GyverHTTP, стандартный esp-WebServer, ESPAsyncWebserver
@@ -184,7 +186,7 @@ void build(sets::Builder& b) {
184
186
```
185
187
186
188
### Контейнеры
187
-
Виджеты можно объединять в контейнеры. Контейнер нужно начать и закончить, так как пакет данных собирается линейно в целях оптимизации скорости и памяти. Метод beginКонтейнер всегда вернёт true для красоты организации кода в блоке условия:
189
+
Виджеты можно объединять в контейнеры. Контейнер нужно начать и закончить, так как пакет данных собирается линейно в целях оптимизации скорости и памяти. Метод `beginКонтейнер` всегда вернёт true для красоты организации кода в блоке условия:
188
190
```cpp
189
191
voidbuild(sets::Builder& b) {
190
192
if (b.beginGroup("Group 1")) {
@@ -258,8 +260,36 @@ void setup() {
258
260
259
261
Вебморда отслеживает статус устройства, при потере связи появится текст offline в заголовке страницы. После потери связи вебморда будет запрашивать информацию о виджетах, это очень удобно при разработке - например добавляем виджет, загружаем прошивку. За это время вебморда уже понимает что устройство оффлайн и при первом успешном подключении выводит актуальные виджеты. При изменении значений виджетов вебморда также следит за доставкой пакета, при ошибке связи появится надпись error у соответствующего виджета.
260
262
263
+
### Авторизация
264
+
В системе предусмотрена авторизация: если в прошивке указать отличный от пустой строки пароль - вебморда будет работать в "гостевом" режиме: отображаются только разрешённые гостям виджеты, файловый менеджер и OTA скрыты и заблокированы. Для ввода пароля нужно зайти в меню (правая верхняя кнопка) и нажать на ключик. Серый ключик означает что авторизация отключена, зелёный - клиент авторизован, красный - неверный пароль. Пароль может содержать любые символы и иметь любую длину - в явном виде он не хранится и не передаётся.
265
+
266
+
Для разделения админского и гостевого доступа предусмотрен виртуальный контейнер Guest. Если пароль установлен и клиент не авторизован - он будет видеть только виджеты из гостевых контейнеров. Для корректной работы гостевой контейнер не должен прерываться обычными контейнерами. Пример:
bool Input(size_t id, Text label, Text value = Text());
376
+
377
+
// ввод пароля
318
378
bool Pass(size_t id, Text label, Text value = Text());
379
+
380
+
// ввод цвета, результат в обычном 24-бит формате
319
381
bool Color(size_t id, Text label, Text value = Text());
382
+
383
+
// переключатель, результат 1/0
320
384
bool Switch(size_t id, Text label, Text value = Text());
385
+
386
+
// дата, результат в unix секундах
321
387
bool Date(size_t id, Text label, Text value = Text());
322
-
bool Time(size_t id, Text label, Text value = Text());
388
+
389
+
// дата и время, результат в unix секундах
323
390
bool DateTime(size_t id, Text label, Text value = Text());
391
+
392
+
// время, результат в секундах с начала суток
393
+
bool Time(size_t id, Text label, Text value = Text());
394
+
395
+
// слайдер
324
396
bool Slider(size_t id, Text label, float min = 0, float max = 100, float step = 1, Text unit = Text(), Text value = Text());
325
397
326
398
// кнопку можно добавлять как внутри контейнера кнопок, так и как одиночный виджет
327
399
bool Button(size_t id, Text label, uint32_t color = SETS_DEFAULT_COLOR);
328
400
bool Button(size_t id, Text label, sets::Colors color);
329
401
330
-
// опции разделяются ;
402
+
// список выбора, опции в виде текста разделяются ;
331
403
bool Select(size_t id, Text label, Text options, Text value = Text());
332
404
333
-
// для активации отправь пустой update на его id
405
+
// окно подтверждения, для активации отправь пустой update на его id
334
406
bool Confirm(size_t id, Text label);
335
407
```
336
408
337
409
Здесь `Text` - универсальный текстовый формат, принимает строки в любом виде. При указании `value` отличным от стандартного будет отправлено его значение. Иначе будет отправлено значение из БД, если она подключена. Если в качестве значения нужно число - используйте конструктор `Value`, например `b.Color("col", "Color", Value(my_color));`, где `my_color` это `uint32_t`.
338
410
411
+
### Build
412
+
Инфо о билде
413
+
```cpp
414
+
// клиент авторизован (или пароль не указан, т.е. все админы)
0 commit comments