GyverLibs / GyverPortal

Простой конструктор веб интерфейса для esp8266 и ESP32
MIT License
311 stars 25 forks source link

latest PIO Foo Foo Foo

Foo

🔥🔥🔥
Обратите внимание на новую библиотеку Settings - она гораздо проще, удобнее и эффективнее, и сделана в классическом дизайне настроек на мобилках
🔥🔥🔥
🔥🔥🔥
Обратите внимание на новую библиотеку GyverHub - это как GyverPortal, только сильно проще, удобнее, работает через Интернет и интегрируется с умным домом!
🔥🔥🔥

GyverPortal

v3.6.6 (23.04.2023)

Простой конструктор веб интерфейсов для ESP8266 и ESP32 img

Совместимость

ЕСЛИ НЕ КОМПИЛИТСЯ НА ESP32 - ОБНОВИ ЯДРО, УЖЕ ПОРА. ДА, ВОТ НА ЭТО

  • esp8266 (SDK v2.7+)
  • esp32 (SDK v2+)

Документация

Теперь находится в Wiki репозитория. Документация на данный момент неполная, на стадии написания!

English docs

Идеи/проблемы/актуальная версия

Известные баги

Некоторые элементы могут некрасиво отображаться на Firefox, т.к. сделаны под Chrome, Safari, Edge, Opera

Разработка на хосте

Примеры можно скомпилировать и выполнить на хосте, запустив ../../onhost [-h] из любого каталога примеров.

Возможности

demo

Универсальный конструктор веб интерфейсов для ESP8266 и ESP32:

demo

Содержание

Установка

Обновление

Версии

Старые ## v1.1 - улучшил графики и стили ## v1.2 - Блок NUMBER теперь тип number - Добавил большое текстовое поле AREA - Добавил GPunix - Улучшил парсинг - Добавил BUTTON_MINI - Кнопки могут передавать данные с других компонентов (кроме AREA и чекбоксов) - Добавил PLOT_STOCK - статический график с масштабом - Добавил AJAX_PLOT_DARK - Изменён синтаксис у старых графиков - Фичи GPaddUnix и GPaddInt для графиков - Убрал default тему - Подкрутил стили - Добавил окно лога AREA_LOG и функцию лога в целом ## v1.3 - переделал GPunix, мелкие фиксы, для списков можно использовать PSTR ## v1.4 - мелкие фиксы, клик по COLOR теперь отправляет цвет ## v1.5 - добавил блок "слайдер+подпись" ## v1.5.1 - мелкий фикс копирования строк ## v1.5.2 - добавлен *meta charset="utf-8"*, английский README (спасибо VerZsuT) ## v1.6 - добавлены инструменты для работы c цветом. Добавил answer() для даты, времени и цвета ## v1.7 - поддержка ESP32 ## v2.0: - Большое обновление! Логика работы чуть изменена, обнови свои скетчи! - Много оптимизации/облегчения/ускорения - Полная поддержка ESP32 - Переделана логика опроса действий (более правильно и оптимально + работает на ESP32) с сохранением легаси - Убран DateTimeP (не используется в библиотеке) и вынес отдельно в библиотеку DatePack - Переделан и облегчен модуль лога (log) - Добавлен MDNS, чтобы не искать IP платы в мониторе порта (см. доку) - Автоопределение режима работы WiFi. Переделан start() с сохранением легаси (см. доку) - Упрощён билдер, строку создавать и передавать не нужно (см. доку) - Объект билдера теперь называется GP (вместо add) с сохранением легаси - Пофикшены варнинги - Добавлены удобства для работы с цветом GPcolor, датой GPdate и временем GPtime - Удалены старые функции преобразования цвета и даты-времени (см. доку) - Портал теперь возвращает цвет в формате GPcolor, автообновление переменных тоже работает с GPcolor - Все примеры протестированы на esp8266 и esp32 ## v2.1 - Вернул функции root() и uri() для удобства создания многостраничности - Добавлен пример организации многостраничности - Добавлена кнопка-ссылка BUTTON_LINK - Добавлена авторизация по логину-паролю (см. доку) - Добавлено OTA обновление прошивки из браузера, в т.ч. с паролем (см. доку) ## v3.0: Очень много всего нового - Огромное спасибо DenysChuhlib и DAK85 за идеи и наработки! - Добавлен "объектный" режим работы, в котором компоненты удобнее конфигурируются, автоматически получают новые значения и код программы становится сильно компактнее - Полностью переписан механизм конструктора, сборка занимает во много раз меньше памяти в SRAM за счёт отправки страницы частями - Переделан механизм добавления кастомного кода на страницу - Аргументы конструктора теперь принимают const String& - можно передавать строки, const строки, F macro строки - Переделаны строковые утилиты - Полностью переделан слайдер - Убран вариант слайдера с текстом и компонент LABEL_MINI - Добавлена возможность задания ширины некоторым компонентам - У некоторых компонентов появилась опция "только чтение" - Редизайн светодиодов LED GREEN/RED, добавлен LED (красно-зелёный) - Добавлен компонент BOX_BEGIN/BOX_END, позволяющий удобно собирать компоненты в группы с нужным размером и выравниванием - Добавлен блок LABEL_BLOCK для выделения текста - Внутренний AJAX_CLICKS заменён на JS_TOP - Переделан основной контейнер страницы для удобства кастомизации под любую ширину интерфейса - Добавлен элемент навигации по динамическим вкладкам NAV_TABS (+ NAV_BLOCK_BEGIN и NAV_BLOCK_END) - Добавлен элемент навигации с кнопками-ссылками NAV_TABS_LINKS - Добавлена поддержка FontAwesome иконок для кнопок и панели навигации https://fontawesome.com/v4/icons/ - Пофикшена бага при использовании старого сценария опроса действий - AJAX_UPDATE переименован в UPDATE с сохранением легаси - Добавлен блок FILE_UPLOAD для загрузки файлов на сервер - Добавлен удобный механизм скачивания файлов из SPIFFS памяти с поддержкой 33 типов файлов - Добавлены блоки для вывода изображений, видео и текстовых файлов из SPIFFS - Примеры переименованы и сгруппированы по смыслу, добавлены новые примеры - Добавлен механизм request - Подключаемым функциям добавлены варианты с адресом на GyverPortal - Добавлены более удобные варианты компонента SELECT и способы его опроса (getSelectedIdx) - Механизм update теперь работает с SELECT блоками - Добавлен шаблон для удобного создания кастомных блоков - Исправлена работа кликов и обновлений на подстраницах - Добавлена мини кнопка-ссылка + кнопки для скачивания файлов - Добавлен оффлайн-режим для графиков (не нужно подключение к Интернет) - Добавлен блок для добавления стилей из spiffs - SLIDER теперь умеет работать с float, добавлен NUMBER_F для float - Добавлен элемент SPINNER - AREA теперь отсылает сигнал click - Добавлены макросы для удобной сборки блоков - И прочее прочее ## v3.1 - пофикшен getBool() ## v3.2 - На этот раз полностью пофикшен getBool()/copyBool() для SWITCH/CHECK - Полностью переделан механизм update() - теперь он работает в несколько раз быстрее и обновляет одновременно все указанные компоненты! ## v3.3 TABLE UPDATE - Улучшена работа парсеров - Улучшены встроенные JS скрипты - Префикс макросов сокращён с GP_MAKE_ до M_, подсветка синтаксиса заменена на жирную - GP_EDGES заменён на GP_JUSTIFY, у SPAN выравнивание теперь тоже задаётся через GPalign - Добавлен url encode, в TEXT теперь можно вставлять текст со "опасными" символами (+#<>` итд) - Компоненту SWITCH теперь можно задавать цвет - click/update/copy Int теперь работает со всеми целочисленными типами (int, byte, long...) - Добавлен FORM_SEND и FORM_SEND_MINI - новый вариант отправки формы без редиректа - Добавлен RELOAD_CLICK для перезагрузки страницы по клику по указанным компонентам - Добавлены стили "отключенным" компонентам - Добавлен SLIDER_C, отправляющий значения в процессе изменения положения - Нажатие и отпускание кнопки теперь работает со смартфона (тачскрина) - Переделан стиль SPINNER, теперь он более компактный - Добавлены таблицы (TABLE_BEGIN, TABLE_END, TD, TR), макросы (GP_MAKE_TABLE, GP_MAKE_TD, GP_MAKE_TR, GP_ALS) - Ширину лога можно настраивать - Для TEXT добавлены атрибуты "паттерн" и максимальная длина ввода. **Изменился последний аргумент в функции** - Добавлен SUBMIT_MINI - Добавлен модуль реального локального времени (запрос с браузера), функции getSystemDate(), getSystemTime(), а также getUnix() - Улучшено ОТА обновление, можно шить через curl - Чуть оптимизирован механизм Update, также сам вырезает лишние пробелы в списке - FOLDER_UPLOAD() теперь работает на ESP32 - Добавлен FILE_MANAGER() - вывод списка файлов из памяти с кнопками удалить, а также обработчики deleteFile(), deleteAuto(), deletePath() - Добавлены компоненты PLAIN() и BOLD() для вывода текста - Добавлен компонент SYSTEM_INFO() - вывод таблицы с системной информацией - Добавлен "глаз" для поля ввода пароля - Добавлен цвет GRAY_B - Блоки BLOCK... теперь создаются одним компонентом. У THIN блока добавилась настройка цвета ## v3.4 UI UPDATE - Добавлено - HTML Canvas (рисование в браузере) + обновление из скетча + Processing API - Разметка страницы в стиле панели управления с боковым меню, компоненты UI_BEGIN, UI_MENU, UI_BODY, UI_END, UI_LINK - UPDATE_CLICK() - вызывает update у указанных компонентов при клике по указанным компонентам - OTA.error() для вывода текста ошибки в любое место на странице - EVAL() выполнение отправленного в update js кода - GyverPortal::setFS() - Выбор цвета для иконок, FILE_UPLOAD, FOLDER_UPLOAD, OTA_FIRMWARE, OTA_FILESYSTEM, TITLE, LABEL, SPAN, PLAIN, BOLD и HR - Макс. ширина для GRID - JS_BEGIN() и JS_END() - В BUILD_BEGIN_FILE() и BUILD_BEGIN() можно передать тему оформления - PAGE_TITLE() - смена имени вкладки в браузере, в т.ч. по update - Цвет GP_WHITE - Иконки-кнопки ICON_BUTTON() и ICON_FILE_BUTTON() - ONLINE_CHECK() - отображение состояния соединения с esp - Подписи к осям AJAX_PLOT - GyverPortal::caching(bool), GyverPortal::clearCache() - Обработка удержания кнопок, отдельный обработчик hold() - Поддержка ESP32 CAM, вывод стрима с камеры (CamStream.h + GP.CAM_STREAM) - Исправлено - Мелкие баги - HINT() для BUTTON, SWITCH и UPLOAD - Потенциальный баг в механизме update - ICON_FILE() - Улучшено - Оптимизация стилей и скриптов - COLOR теперь можно парсить как int - Значительно ускорена (кеширование) загрузка страницы без скриптов/стилей в spiffs - При обновлении библиотеки не нужно чистить кеш браузера - FILE_MANAGER(): удаление файлов теперь не меняет url в браузере + добавлены кнопки скачать и переименовать + выбор директории - Улучшена обработка отпускания кнопки - SPINNER(): удержание кнопок, настройка скорости в GP.setSpinnerPeriod() - Убран перенос строки в последней строке в LOG - Актуализированы objects, добавлен пример - Изменено - Логика работы всплывающих окон, УБРАН АРГУМЕНТ ПЕРИОД - SPINNER(): УБРАНА ШИРИНА, сделана автоширина, значение по центру - Автоматическое скачивание/загрузка/удаление/переименование ТЕПЕРЬ ВКЛЮЧЕНО ПО УМОЛЧАНИЮ! - Отсортированы примеры, portal переименован в ui для краткости - clickUp и clickDown вынесены в обработчик hold() - Убран устаревший код (до v3) - Убраны суффиксы Obj у недокументированных функций - У CHECK и SWITCH можно выбрать цвет, ПОРЯДОК АРГУМЕНТОВ ИЗМЕНЁН - Изменён порядок аргументов у GPlistIdx, сделан более логичным ## v3.5 CHRISTMAS UPDATE - Добавлено - Отображение границ таблицы TABLE_BORDER() - Опасные copy- и click-парсеры (для опроса в условии) - Ширина для AREA - Всплывающее окно с ошибкой, если "клик" не дошёл до сервера - Можно получить логин и пароль, которые вводятся при авторизации, login() и pass() - Настройка размера/толщины текста и переноса для текстовых подписей TITLE, LABEL, LABEL_BLOCK. Подписи SPAN/BOLD/PLAIN больше не нужны - encodeDMY для GPdate (день.месяц.год) - Цвет GP_YELLOW_B - Настройка цвета для LED - RELOAD_CLICK работает с popup (ALERT, PROMPT, CONFIRM) - Проверка подключен ли клиент, функции online() и onlineTimeout() - У веб-лога добавлены кнопки для очистки и остановки прокрутки - Компонент RADIO для списков выбора - Пофикшено - Глаз в PASSWORD() поставлен на место - Баг с макросом M_TR10 - SPINNER() повинуется выравниванию - Таблица SYSTEM_INFO вернулась в компактный вид - HINT (сломался в v3.4) - Невероятный баг с вечной загрузкой CHECK() и проблемой с опросом его значения с формы - Улучшено - Оптимизированы скрипты - Автоматическое удаление пробелов в списке UPDATE() - Ширину окна CAM_STREAM() и cam_stream_window можно задать стрингой - Дизайн таблички FILE_MANAGER - Переделан механизм перезагрузки страницы, теперь работает гораздо быстрее и стабильнее - UPDATE запрашивает обновления только когда окно браузера активно - UPDATE при пропадании связи сигнализирует всплывающим баннером - Скрыты пустые ячейки у таблицы с заданными ширинами - Изменено - В SPINNER() вернулась ширина предпоследним аргументом, её установка отключает автоширину - ONLINE_CHECK() теперь выдаёт всплывающий баннер вместо иконки в названии страницы - Убран setReloadTimeout(), механизм улучшен, задаётся общий таймаут в setTimeout() - Дизайн LABEL_BLOCK, чтобы отличался от кнопок - Поле пароля с "глазом" теперь вызывается компонентом PASS_EYE ## v3.5.2 FIX - Добавлено - Объект RADIO - Пофикшено - Вернул автоматическую ширину полям ввода текста - Принудительное отображение секунд в TIME - Ошибка компиляции esp32 - Пример WiFilogin - Улучшено - Отключен зум на мобильных устройствах ## v3.5.3 FIX - Пофикшено - Критический баг в GPfileType и отправке файла на 8266 - Не работало удаление через менеджер файлов на esp32 - Улучшено - Кнопки внутри формы не приводят к сабмиту (багофича html)

v3.6 MINOR

v3.6.1

v3.6.2

v3.6.3

v3.6.4

v3.6.5

v3.6.6

Баги и обратная связь

При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru Библиотека открыта для доработки и ваших Pull Request'ов!

При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать: