GyverHub icon indicating copy to clipboard operation
GyverHub copied to clipboard

Бета версия

Open GyverLibs opened this issue 1 year ago • 359 comments

Чат в телеге https://t.me/AlexGyverChat/441438

Планируется очередное крупное обновление! Обновлённая библиотека будет несовместима с необновлённым приложением и наоборот. Нужно перекомпилировать прошивку с новой версией библиотеки.

Изменения, требующие исправлений в программе

  1. Упрощён Canvas, функции BeginCanvas и EndCanvas упразднены, объект canvas больше не нужно передавать в b.Canvas, но нужно передать b в объект Canvas:
    b.Canvas();
    gh::Canvas cv(b);
    cv.line(0, 0, -1, -1);
    cv.line(0, -1, -1, 0);
    
  2. Из Canvas убран весь HTML API, оставлен только Processing. Улучшен, протестирован и полностью совпадает с обычным Processing по результату на экране
  3. Подключение Serial связи переделано, см. пример manual/stream_serial
  4. У виджета Space ширина и высота теперь указываются в самой функции: b.Space(4, 3);. Оба параметра необязательные
  5. Ширину 1 теперь задавать необязательно: если ширина не указана - она считается 1

Изменения и добавления

В библиотеке:

  • Добавлена связь между устройствами (в т.ч. широковещательные запросы) по всем доступным способам связи (+ UDP и любые кастомные)
  • Добавлены удобные статические функции для Color
  • Добавлены возможности в таймер Timer
  • Добавлен виджет "карта" и инструменты для работы с геолокацией (запрос и получение координат приложения, рисование на карте)
  • В контейнер col/row добавлен заголовок и цвет заголовка
  • Добавлен контейнер Spoiler
  • Добавлен обработчик Ping для отправки апдейтов даже по http связи (без ws)
  • Множество мелких улучшений и исправлений

В приложении:

  • Добавилась поддержка "плагинов" - кастомных виджетов и контейнеров
  • Добавилась публичная база плагинов, можно устанавливать плагины в приложение
  • Множество мелких улучшений и исправлений

Пощупать dev версию

  • Веб - http://hub.gyver.ru/dev/
  • Андроид - apk
  • Библиотека - ветка dev
    • lib_deps = https://github.com/GyverLibs/GyverHub/archive/refs/heads/dev.zip

GyverLibs avatar Feb 25 '24 08:02 GyverLibs

Всем привет! Версия библиотеки v0.1b. Arduino IDE 1.8.19. WEMOS D1 mini. Не получилось задать свою иконку: GyverHub hub("MyDevices", "ESP", ""); - что ни ставь 3м параметром (пусто, глиф или код с сайта) - ничего не меняется в браузере - остается иконка "домик". В скетче задан #define GH_INCLUDE_PORTAL На кнопках также методом icon() не удалось получить картинку: по умолчанию жирный круг, если задать какое-то значение в icon - пустой виджет... Пока с этим не получилось разобраться. Пример fulltest с иконками тоже не работает. И не нашел, как кнопку сделать обычной прямоугольной кнопкой...

aleta2020 avatar Feb 27 '24 08:02 aleta2020

В есп версии вырезаны все иконки кроме системных. Кнопка - иконка, обычных прямоугольных нет. Пока что

GyverLibs avatar Feb 27 '24 09:02 GyverLibs

В есп версии вырезаны все иконки кроме системных. Кнопка - иконка, обычных прямоугольных нет. Пока что

А текст на кнопку можно поместить или нет?

d347h4ck avatar Feb 27 '24 11:02 d347h4ck

Идея для виджета - поле Input, но переменная - число, все проверки и валидация внутри класса

d347h4ck avatar Feb 27 '24 14:02 d347h4ck

Это обычный input + regex на only numbers, в библиотеке есть макрос готовый

GyverLibs avatar Feb 27 '24 14:02 GyverLibs

Это обычный input + regex на only numbers, в библиотеке есть макрос готовый

Все таки не совсем, насколько я понял у инпута переменная привязанная - это строка должна быть и если мы хотим привязать интовое значение, то нам нужна переменная прокладка, через которую будет происходить конвертация, но это не очень удобно, особенно, если использовать постоянную память, приходится ее инициализировать отдельно

Возможно я неправ и в инпут можно засунуть инт?

d347h4ck avatar Feb 27 '24 15:02 d347h4ck

Внимательнее к документации. К любому виджету можно привязать можно любой стандартный тип данных, строки, массивы, целые и дробные числа

GyverLibs avatar Feb 27 '24 15:02 GyverLibs

В есп версии вырезаны все иконки кроме системных. Кнопка - иконка, обычных прямоугольных нет. Пока что

а системные иконки можно на кнопку указать? если да, то где бы посмотреть список системных?

вообще хотелось бы на кнопку просто текст вывести без иконки, думаю это будет вполне презентабельно

SpiritSP avatar Feb 27 '24 21:02 SpiritSP

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

GyverLibs avatar Feb 27 '24 21:02 GyverLibs

Еще заметил такую штуку, что при добавлении слайдера на дашборд при обновлении через b.refresh() интерфейса возникает неприятное "подергивание" всего интерфейса, быть может это можно как-то исправить...

d347h4ck avatar Feb 27 '24 21:02 d347h4ck

Отличные новости, ждем... Сижу вот перепиливаю с первой беты на текущую весьма жирный интерфейс. Медленно движусь, но пока все нравится в новой версии. Из пожеланий: при удалении модуля ModOtaUrl было бы неплохо скрывать его из вкладки OTA окончательно, а то сейчас там заголовок остается висеть, а ссылки изчезают, как и в первой бете. Снимок

А, и подсветку текста цветом бы в виджете Text

SpiritSP avatar Feb 27 '24 21:02 SpiritSP

@d347h4ck возможно уже исправлено в рабочей версии приложения, там очень много доработок

GyverLibs avatar Feb 27 '24 21:02 GyverLibs

@SpiritSP ну это спорный вопрос. Модуль отключен, но обозначено что он существует в приложении, чтобы юзер не думал что что то что сломалось

Тут тоже, чем меньше у юзера возможностей покрасить всё в вырвиглазные цвета - тем лучше :) если это текст, значит это текст, системного цвета текста приложения

GyverLibs avatar Feb 27 '24 21:02 GyverLibs

Wrong packet (JSON): SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON in: <!DOCTYPE html>\r\n<html lang="en">\r\n<head>\r\n <meta charset="UTF-8">\r\n <title>GyverHub v0.50b</title>\r\n <meta name="description" content="Arduino/ESP8266/ESP32 Web Control Panel">\r\n <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">\r\n <script src="script.js?0.50b="></script>\r\n <link href="style.css?0.50b=" rel="stylesheet">\r\n</head>\r\n<body onresize="resize_h()">\r\n <div id="notice" class="notice"></div>\r\n <div class="head" id="head_cont"></div>\r\n <div class="test" id="test_cont"></div>\r\n <div class="projects" id="projects_cont"></div>\r\n <div class="main" id="main_cont"></div>\r\n <div class="cli" id="cli_cont"></div>\r\n <div class="footer" id="footer_cont"></div>\r\n</body>\r\n</html>

эта ошибка так и осталась) хотя новую версию залил, откуда он это выискивает?)

Serega88kos avatar Feb 28 '24 11:02 Serega88kos

Серёг за.бал, не смешно уже. У тебя где то в сети устройство со старой версией, или где то в кэшах

GyverLibs avatar Feb 28 '24 11:02 GyverLibs

Серёг за.бал, не смешно уже. У тебя где то в сети устройство со старой версией, или где то в кэшах

Саня, не могу найти причину, не ругайся. С любого браузера такое выдает, и с телефона, устройства точно нет.

Попробую виртуальную машину, больше вариантов нет.

Serega88kos avatar Feb 28 '24 11:02 Serega88kos

по IP адресу открылась страница)

Serega88kos avatar Feb 28 '24 12:02 Serega88kos

В GyverPortal была возможность в браузере выгрузить файл с SD-карты (ESP на карту пишет логи и эти логи нужно просматривать и выгружать). Что-то типа повесить на кнопку: p.sendFile(SD.open(curfilename, FILE_READ)); В GH не нашел пока ничего такого. Может для такой задачи Fetch нужно использовать? Не подскажете: есть такой механизм? Если нет - будет?

aleta2020 avatar Feb 28 '24 12:02 aleta2020

@aleta2020 нативная поддержка SD карты будет позже. Сейчас можно через fetch, передать в fetchFile(sd.open) или как то так

GyverLibs avatar Feb 28 '24 14:02 GyverLibs

глиф или код с сайта) - ничего не меняется

вот и у меня иконки не загружаются, @aleta2020 решил вопрос с fontawesome?

Serega88kos avatar Feb 28 '24 14:02 Serega88kos

эта ошибка так и осталась) хотя новую версию залил, откуда он это выискивает?)

А в другой файфай точке пробовали? Допустим с телефона запустить точку доступа и проверить? Может что-то с роутэром? Либо настройками вайфай?

DenysChuhlib avatar Feb 28 '24 14:02 DenysChuhlib

@Serega88kos ещё раз - из есп-версии приложения вырезаны все иконки кроме системных. Позже будет гайд как сбилдить себе версию с полными иконками, также можно подключить иконку по url к файлу

GyverLibs avatar Feb 28 '24 14:02 GyverLibs

Сейчас с телефона и апк заработало. Иконки тоже все загрузились.

Serega88kos avatar Feb 28 '24 21:02 Serega88kos

@Serega88kos в есп версии вырезаны все иконки кроме системных

GyverLibs avatar Feb 28 '24 21:02 GyverLibs

@Serega88kos в есп версии вырезаны все иконки кроме системных

Это я понял, я про сторонние с сайта, прописаны через код.

Serega88kos avatar Feb 28 '24 21:02 Serega88kos

Вопрос по Widget& Image(AnyText text); - должен ли виджет показывать картинку по url ? Типа: b.Image("https://openweathermap.org/img/w/01d.png"); У меня в браузере и приложении крутятся стрелки и пишет IMAGE [ERROR]. Если нет, то предполагается ли такая функциональность или как по-другому грузить картинку в виджет? И вопрос по ERROR: как можно посмотреть детали ошибки?

aleta2020 avatar Feb 29 '24 14:02 aleta2020

@aleta2020 на данный момент image качает по url файл из памяти еспшки. Позже будет больше возможностей и описание к каждому виджету. Error это ошибка загрузки, других ошибок нет

GyverLibs avatar Feb 29 '24 14:02 GyverLibs

На сайте fontawesome по четыре иконки, а код у них один и тот же. В приложении показывается первая иконка (Solid).

  1. Можно ли (будет) использовать другие из представленных видов? - типа еще один параметр...
  2. Виджету Icon(AnyPtr ptr), если в качестве параметра передать "f185" или другой код, в приложении все равно показывает "лампочку". Сообщения Error нету. Это баг или фича?
  3. Механизмы использования кода иконок с сайта fontawesome в hub.config() и b.Icon() отличаются?

aleta2020 avatar Feb 29 '24 14:02 aleta2020

@aleta2020

  1. Нет, в приложение вшит бесплатный пак solid иконок. Но можно использовать любые svg файлы (сейчас частично, позже полностью)
  2. Внимательнее к документации, AnyPtr - это подключение переменной для чтения и изменения. Виджету icon иконка задаётся через параметр text, в документации должно быть указано
  3. Всё что называется иконкой - имеет одинаковый механизм. Иконка из списка иконок, вставляется глиф либо юникод строка

GyverLibs avatar Feb 29 '24 15:02 GyverLibs

Саня, вопрос странный, но... После перехода на свежую версию хаба наблюдаются баги у FastLED. Не подбирается версия библиотеки и ядро ESP. Либо косяк с первым светодиодом, либо проблема вообще с цветами... Проблему подтвердили, не только у меня, поэтому и спрашиваю) Сейчас рассматриваю NeoPixel, но переделок много...

Serega88kos avatar Feb 29 '24 15:02 Serega88kos