Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Бета версия #44

Open
GyverLibs opened this issue Feb 25, 2024 · 326 comments
Open

Бета версия #44

GyverLibs opened this issue Feb 25, 2024 · 326 comments

Comments

@GyverLibs
Copy link
Owner

GyverLibs commented Feb 25, 2024

Чат в телеге 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 версию

@aleta2020
Copy link

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

@GyverLibs
Copy link
Owner Author

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

@d347h4ck
Copy link

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

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

@d347h4ck
Copy link

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

@GyverLibs
Copy link
Owner Author

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

@d347h4ck
Copy link

d347h4ck commented Feb 27, 2024

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

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

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

@GyverLibs
Copy link
Owner Author

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

@SpiritSP
Copy link

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

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

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

@GyverLibs
Copy link
Owner Author

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

@d347h4ck
Copy link

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

@SpiritSP
Copy link

SpiritSP commented Feb 27, 2024

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

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

@GyverLibs
Copy link
Owner Author

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

@GyverLibs
Copy link
Owner Author

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

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

@Serega88kos
Copy link

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>

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

@GyverLibs
Copy link
Owner Author

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

@Serega88kos
Copy link

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

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

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

@Serega88kos
Copy link

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

@aleta2020
Copy link

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

@GyverLibs
Copy link
Owner Author

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

@Serega88kos
Copy link

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

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

@DenysChuhlib
Copy link

DenysChuhlib commented Feb 28, 2024

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

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

@GyverLibs
Copy link
Owner Author

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

@Serega88kos
Copy link

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

@GyverLibs
Copy link
Owner Author

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

@Serega88kos
Copy link

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

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

@aleta2020
Copy link

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

@GyverLibs
Copy link
Owner Author

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

@aleta2020
Copy link

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

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

@GyverLibs
Copy link
Owner Author

@aleta2020

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

@Serega88kos
Copy link

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

@karpovi
Copy link

karpovi commented Jun 9, 2024

Решил опять по про бывать обновить все библиотеки и собрать проект. Но все равно не собирается хотя с старыми библиотеками собирался. У меня настройки для mqtt берутся из pairs и изменять можно в веб интерфейсе. Но сейчас такая ошибка при сборке: src/_hub.h:242:117: error: no matching function for call to 'config(pairs::PairAccess, pairs::PairAccess, pairs::PairAccess, pairs::PairAccess)'
242 | hub.mqtt.config(settings["mqttserver"], settings["mqttport"], settings["mqttuser"], settings["mqttpassword"]);
|

В коде ни чего не менял вообще, если вернуть старые версии библиотек то все прекрасно собирается.

@karpovi
Copy link

karpovi commented Jun 9, 2024

image

@GyverLibs
Copy link
Owner Author

Вообще нельзя из pairs в const char*, это не будет корректно работать

@GyverLibs
Copy link
Owner Author

Ченить придумаю

@karpovi
Copy link

karpovi commented Jun 9, 2024

Пришлось переписать вот так (работает):
String srv = settings["mqttserver"];
hub.mqtt.config(srv.c_str(), settings["mqttport"], settings["mqttuser"], settings["mqttpassword"]);
до этого было так:
hub.mqtt.config(settings["mqttserver"], settings["mqttport"], settings["mqttuser"], settings["mqttpassword"]);

@GyverLibs
Copy link
Owner Author

Да, так можно. Вроде в dev версии нативно принимает Text

@Serega88kos
Copy link

Саня, реально ли у точки и запятой в Label Spinner и т.д. уменьшить интервал между цифрами?)
Чтобы не занимали целое место под цифру, для экономии пространства)
25 , 6 в 25,6

@GyverLibs
Copy link
Owner Author

@Serega88kos выбрать другой системный шрифт

@Archiset83
Copy link

Приветствую всех! Подскажите, пожалуйста, в бета версии OTA обновление работает? Если да, то как это реализовать? В документации не нашёл. Может не там искал? Если так, ткните, пожалуйста носом;)

@Serega88kos
Copy link

Заходишь в устройство, вкладка OTA, выбираешь файл или указываешь ссылку)

@Archiset83
Copy link

В том то и дело, что так не работает. Думал может заклинание какое в скетче нужно прописать)
Screenshot_20240614-222039

@Archiset83
Copy link

В ардуино иде компилирую бинарник. В приложении захожу в устройство, ота, flesh, выбираю бинарник, нажимаю Да- устройство отваливается, стрелочки крутятся бесконечно, ошибок никаких не вылетает.

@GyverLibs
Copy link
Owner Author

Странно, у меня всё работает отлично

@Serega88kos
Copy link

Попробуй принудительно перезагрузить (выключить питание), а также удалить устройство и добавить заново.
Когда заливаешь прошивку, он пишет, что успешно, дальше уже плата обрабатывает прошивку.

@Archiset83
Copy link

Удалил и заново добавил устройство, в настройках нажал кнопочку "перезагрузить"- всё получилось. Спасибо большое!

@Roxer00
Copy link

Roxer00 commented Jun 21, 2024

Александр, привет. Подскажи, а в DEV все виджеты которым можно назначить иконки поддерживают внешние иконки?
Помнится пробовал давно, получалось зацепить внешнюю иконку. Сейчас попробовал никак не получается. Пробовал svg и png. Может я на какой то другой виджет пробовал раньше? Или все должны поддерживать внешние иконки?

@GyverLibs
Copy link
Owner Author

Привет, пока нет

@Archiset83
Copy link

Парни, приветствую! Подскажите, пожалуйста, в beta версии работает hub.sendPush()? Всплывающие уведомления срабатывают, а вот пуш- не хотят.

@GyverLibs
Copy link
Owner Author

Пуш тут притянут за уши, работает только на https версии и только по mqtt, если открыто приложение. Возможно позже получится сделать лучше, но это не точно

@Archiset83
Copy link

Пуш тут притянут за уши, работает только на https версии и только по mqtt, если открыто приложение. Возможно позже получится сделать лучше, но это не точно

Ясно. Спасибо. Будем надеяться, когда-нибудь заработает.

@GyverLibs
Copy link
Owner Author

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

@Archiset83
Copy link

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

Ну понятно. Раз так всё сложно, будем слать в вотсап или телеграм)

@Serega88kos
Copy link

Serega88kos commented Aug 29, 2024

Саня, в текущем (не dev) хабе с последними GSON и StringUtils
не избавиться от запятых в конце Title Label?
Если нет, подскажи, какие тогда последние версии библиотек использовать.
p.s. или это от Pairs?

разобрался: JSON 1.4.8

@asd2003ru
Copy link

Что то совсем не получается. Простейший пример.
#define GH_INCLUDE_PORTAL
#include <GyverHub.h>
....
void build(gh::Builder& b) {
if (b.beginRow()) {
b.Button();
}
}

Захожу в морду через встроенный портал. Wrong package JSON.
В браузере wsocket прилетает

#{#1:"cf9cff91",#3:#1b,#1a:[{#1:"_n1",#3:#80,#81:#76,#45:[{#1:"_n2",#3:#68}]}#

@Roxer00
Copy link

Roxer00 commented Sep 27, 2024

Саш, привет. Такой вопрос:
У меня скопилось уже довольно много устройств и их список в приложении на мобильных устройствах да и в приложении для ПК получается общий, так как имя сети у них одинаковое. При этом, большинство из них нужно только мне, и при этом я тоже хотел бы их видеть по группам, согласно их назначению. Другим пользователям их видеть как минимум незачем, да и просто вся эта каша неудобна.
Да, можно конечно разделять их по разным сетям, но как тогда поступать например на мобильнике? Ставить несколько приложений? Не думаю что так можно, да и неудобно это.
Вопрос собственно в том, нельзя ли сделать в приложении типа папок по имени сети, чтоб как то систематизировать общую свалку из устройств?

@GyverLibs
Copy link
Owner Author

Привет, нет

@Maksim-Shchepin
Copy link

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

@GyverLibs
Copy link
Owner Author

привет нет

@Serega88kos
Copy link

@GyverLibs Саня, от чего возникает такая проблема?
Когда делаешь обновление по воздуху, не всегда стартует ESP, приходится обесточивать устройство.
Это с хабом, библиотеками или ESP?

@Serega88kos
Copy link

Также бывает, что не обновляется устройство, когда используется автообновление.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests