Идеи/проблемы на обновление v3.7
GyverLibs opened this issue · 122 comments
v3.7
- Добавлено
- system info в графе uptime выводит также дни
- GPlog настройка autoClear(bool), умолч. включена, можно выключить чтобы лог сохранялся
- Тип и парсеры GPweek
- Тип и парсеры GPflags
- Пофикшено
- Автоматическое открытие портала при подключении к ESP в режиме AP не работало на некоторых устройствах
- Улучшено
- Все copyStr() - если указана длина, теперь строка записывается, даже если входящая строка длиннее
- GPlog снова работает как кольцевой буфер
- Изменено
- ...
ROADMAP
- Не задаётся размер мини кнопок
- Вернуть FIFO в LOG
- Привязать стили к классам
- драг н дроп файлы и ота
- Возможно убрать online check
- ОТА через cmd/shell
curl -vF firmware=@firmware.bin http://x.x.x.х/GP_OTAupload
- двойной слайдер https://w3collective.com/double-range-slider-html-css-js/
- джойстик (папка на раб столе)
- графики https://github.com/leeoniya/uPlot
- таймлайн как разновидность графика
- вебсокет
- аналог grid ui
- асинхронный сервер
много кода) спрячь под спойлер плз
в телеге я бы не увидел, а тут прямо лично в руки) спасибо
Здраствуйте, а почему вы CustomOTA не обновили на новый? Я скидывал в прошлом issue.
Могу еще раз скинуть...
кидай, я всё пропустил видимо
Ось
CustomOTA.zip
Ось тоже самое, но я добавил важные коментарии для любителей.
CustomOTA.zip
не компилит твоя ота, сейчас люди обновятся и п*дец
class UpdaterClass' has no member named 'getErrorString
А поддержка WebSockets - это уже интересно....
UpdaterClass
Я и на esp8266 и esp32 использую. У меня все ок...
В каком рядке ошибка?
Какая версия ядра у тебя?
esp32 или esp8266 ?
Ладно проверю снова на новых версиях...
У меня 2.7.4 и 3.0.2 на 32
Так погоди! getErrorString это я добавлял в ота. Возможно ты не ту реализацию исправлял, вот мы и не совпали
Работает?
Я для версии 3.5 делал.
Нет, у меня куча ошибок вылетает
Киньте ошибки
А на 8266 есть ошибки, сейчас исправлю
А не это ошибки в Gyver Portal, в СustomOTA не вижу
In file included from c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/portal.h:22,
from c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/GyverPortal.h:57,
from C:\Users\chyhl\OneDrive\Документи\Arduino\ESP8266\Watch\Watch.ino:9:
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h: In member function 'virtual int ArgParser::args()':
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h:11:25: error: no return statement in function returning non-void [-Werror=return-type]
11 | virtual int args() {} // amount
| ^
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h: In member function 'virtual const String& ArgParser::arg(const String&)':
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h:12:49: error: no return statement in function returning non-void [-Werror=return-type]
12 | virtual const String& arg(const String& n) {} // value from name
| ^
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h: In member function 'virtual const String& ArgParser::arg()':
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h:13:34: error: no return statement in function returning non-void [-Werror=return-type]
13 | virtual const String& arg() {} // value from 0
| ^
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h: In member function 'virtual const String& ArgParser::argName()':
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h:14:38: error: no return statement in function returning non-void [-Werror=return-type]
14 | virtual const String& argName() {} // name from 0
| ^
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h: In member function 'virtual bool ArgParser::hasArg(const String&)':
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h:15:43: error: no return statement in function returning non-void [-Werror=return-type]
15 | virtual bool hasArg(const String& n) {} // check
| ^
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h: In member function 'virtual bool ArgParser::clickF()':
c:\Users\chyhl\OneDrive\���������\Arduino\libraries\GyverPortal\src/parsers.h:16:28: error: no return statement in function returning non-void [-Werror=return-type]
16 | virtual bool clickF() {}
| ^
cc1plus.exe: some warnings being treated as errors
это я уже поправил
А в каком редакторе вы делаете библиотеки?, я в Notepad++ и вижу в нем проблемы с табуляцией(
нет никаких проблем с табуляцией
Тогда я ей не правильно пользуюсь(
ошибка error: 'class UpdaterClass' has no member named 'getErrorString' out = Update.getErrorString();
В Notepad++ выглятит всьо хорошо а в гитхабе все сьезжает непонятно.
ошибка error: 'class UpdaterClass' has no member named 'getErrorString' out = Update.getErrorString();
на esp8266?
ага
странно я просто использую там функцию бо там есть доп инфа з класса
у меня работал, покрайней мере на прошлой версии
ошибка error: 'class UpdaterClass' has no member named 'getErrorString' out = Update.getErrorString();
А если закоментировать рядок работает?
getErrorString видимо появилась буквально недавно, надо её убирать из кода
константы типа UPDATE_ERROR_OOM туда же, даже на версии 3 их нету
У меня esp8266 версии 3.1.1 от файлы окрыл все есть
новейшая версия
поздравляю, но я про версию 3.0 условно
вы на 3.0 ориентируетесь?
вот на это тоже ругается
out += F("real: ") + String(ESP.getFlashChipRealSize(), 10);
лучше эту бяку вообще убрать и сделать
out += F("real: ")
out += ESP.getFlashChipRealSize();
я ориентируюсь на 2.7.4. Третью версию в гробу видал
А есть константа для проверки версии?
да, вот так задана
#define GP_VERSION "3.6.1"
я ориентируюсь на 2.7.4. Третью версию в гробу видал
А что там такого в 3 версии?
А есть константа для проверки версии?
Я про версию esp8266
очень много чего поломано пишут, я пока не планирую переходить. Банально адресные ленты лагают даже
Про ленты знаю и на esp32 тоже мигания очень заметны
что именно не рабоатет? я придумал как это оключить и если нужно включить
я закомментировал всё чего нет в 2.7.4 и релизнул
ESP32
SDK v4.4.4
После обновления Portal на 3.6.0 и 3.6.1, при наступлении события click в котором вызываю portal.copyInt, происходит перезагрузка ESP. На 3.5.2 всё работает.
Eсть warning при компиляции:
!
In file included from lib/GyverPortal/src/GyverPortal.h:57,
from lib/GyverPortal/src/GyverPortal.cpp:1:
lib/GyverPortal/src/portal.h: In member function 'virtual const String& GyverPortal::arg(const String&)':
lib/GyverPortal/src/portal.h:568:28: warning: returning reference to temporary [-Wreturn-local-addr]
return server.arg(n);
^
lib/GyverPortal/src/portal.h: In member function 'virtual const String& GyverPortal::arg()':
lib/GyverPortal/src/portal.h:571:28: warning: returning reference to temporary [-Wreturn-local-addr]
return server.arg(0);
^
lib/GyverPortal/src/portal.h: In member function 'virtual const String& GyverPortal::argName()':
lib/GyverPortal/src/portal.h:574:32: warning: returning reference to temporary [-Wreturn-local-addr]
return server.argName(0);
!
Я догадывался что тут могут быть проблемы.. но блин у меня не выдает ошибок и работает нормально, почему
Спасибо! теперь всё работает, ошибок нет
плохо) надо разобраться будет
Если функция пустая можно её к нулю прировнять, я в кучи библах видел такое и сам делал. Это должно решить проблему
void func() = 0;
Если функция пустая можно её к нулю прировнять, я в кучи библах видел такое и сам делал. Это должно решить проблему `void func() = 0;
virtual const String& arg(const String& n) = 0;
virtual const String& arg() = 0;
virtual const String& argName() = 0;
Если имелось в виду так, то всё теже проблемы, единственно что пропадает предупреждение <определение функции не найдено>
Проблема в том что эти функции используються в класе, а эти функции не реализованы. Вот оно и жалуеться.
@DenysChuhlib эм, нет. Читай про наследование классов
Обновился на новую, теперь всё хорошо)
@GyverLibs возможно ли на лету менять gmt в GyverNTP?
Через форму отправляю значение на запись в EEPROM и после вызываю
ntp.end();
ntp.setGMT(gmt);
ntp.begin();
но реакции нет, время не меняется.
если перезагрузить esp, то все меняется.
должен без проблем меняться, gmt участвует только непосредственно в расчётх при опросах времени типа second() minute(), во время опроса времени его нет
в GP.SYSTEM_INFO();
возможно добавить строку для информации о EEPROM?
какой информации?
занято/свободно что-то подобное
эм, у стандартной либы епрома нет такого понятия как занято/свободно... 🤦♂️🤦♂️
Обнаружил баг c функцией системной информации "GP.SYSTEM_INFO()", а точнее в Uptime.
Счётчик работает до 23:59:59, а потом обнуляется и по кругу... То есть вначале не добавляется цифра с количеством отработанных дней.
Библиотека GyverPortal версии: 3.6.3
Взят голый пример "systemInfo" + добавил туда простой кастомный Uptime, который выводится в "GP.LABEL()" в самом верху примера.
ну не то чтобы баг, этого просто не написано) сделаю
Алекс, а вот если бы в портале была бы возможность запуститься в режиме точки доступа и потом выбрать сеть к которой подключиться - это бы была бомба)))
Вот пример
https://github.com/Hieromon/AutoConnect
GyverPortal это веб-интерфейс, он никаким образом не должен запускать wifi и какие то манипуляции с ним делать. Сконфигурировать своё устройство в режиме AP - в портале есть пример, как получить и хранить данные
Да, вэб-интерфейс, но согласись что он заточен под IoT устройства
И wi-fi менеджер был бы там очень кстати
Я считаю что достаточно примера как это сделать средствами портала. К тому же логины/пароли нужно где то хранить, делать это за юзера тоже не очень красиво
Да, вэб-интерфейс, но согласись что он заточен под IoT устройства И wi-fi менеджер был бы там очень кстати
У Алекса Гайвера есть вполне удобная и лёгкая библиотека WiFi менеджера "SimplePortal", воспользуйся ей.
Единственно, что в той библиотеке не хватает, это автоматического поиска сетей и подстановку их в поле ввода SSID.
Очень хотелось бы видеть асинхронный web сервер и web сокеты для обмена данными между браузером и ESP32.
По реализации неплохой пример есть здесь
https://randomnerdtutorials.com/esp32-websocket-server-arduino/
@Oleg-Perevyshin думаю этого не будет, т.к. async либ нет в менеджере библиотек, а GP рассчитан на новичков
Ну хотя бы web сокет поднять, гораздо удобнее данные гонять туда-сюда, чем постоянно через запросы или обновление страницы.
сокет планируется, но даже примерно неизвестно когда, может не в этом году
@GyverLibs есть возможность в M_BOX
задавать свой class?
Нужен для работы скрипта, в данный момент блок нужный inliner
Обращаюсь к нему так $('.inliner:last')
находит верно, но далее работа с ним некорректная)
Писал своим кодом через GP.SEND(html)
все работает как надо)
Есть возможность делать только то, что указано в документации. Все остальное - через кастом компоненты
и в добавок, как парсить такой ответ?)
select: 0 number: 2 select: 1 number: 2 и т.д.
Есть возможность делать только то, что указано в документации.
это то понятно, добавить в реализацию движка?
как парсить такой ответ
Ну как придумал протокол, так и парсить. Если не парсится - придумай другой
добавить в реализацию движка?
Ничего не понимаю
Ничего не понимаю
ROADMAP
Ну как придумал протокол, так и парсить. Если не парсится - придумай другой
это я переделал прошлый вариант, со стрингами
Таааак, здравствуйте молодые люди.
И тут эта дичь со списками байтов в стрингах?!?
Зачем городить СТРОКОВЫЙ конфиг при наличии веб интерфейса с кучей возможностей для настройки и выбора?
https://playcode.io/1320297 через кастом работает, а если собрать компонентами движка и вложить в box, то клонирование то работает, а вот управление только родительским боксом, меняя спиннер в других боксах, изменения затрагивают первый) удалить можно только один раз и после добавления и удаления не работают.
ROADMAP
что ROADMAP?....
и удаления не работают
все нестандартные задачи решаются кастомным html+js. Непонятные никому ненужные конструкции в библиотеку добавляться не будут
что ROADMAP?....
самое первое сообщение этой темы, план на будущее.
будет добавлена возможность добавления свои классы в боксы?
Непонятные никому ненужные конструкции в библиотеку добавляться не будут
этого не просил, просто вопрос был по замене класса, и всего то
добавления свои классы в боксы?
категорически не понимаю нежелания сделать свой кастомный компонент
категорически не понимаю нежелания сделать свой кастомный компонент
над этим я уже думал...
просто много вопросов возникло по сопутствующим вещям...
ладно, подумаем позже...
благодарю)
а что думать, просто взять реализацию из builder.h, обозвать MY_BOX т добавить в него что угодно дополнительно
Да, я помню как это делается, делал для первых версий движка новые фишки...
Непонимание было где хранить, сейчас сообразил, прямо в прошивке.
Блин, как же время улетает быстро, пора отдыхать, засиделся...
На следующей неделе посоображаю, будет много времени)
UPD:
Доделал, что хотел) но все равно пришел, с формой и байтами в стрингах)
просто как в примере customcomponents, положить файлик рядом со своим скетчем
в wiki объекты надо поправить, например в number не принимает уже мин и макс
@GyverLibs Как правильно написать такой код чтобы работал? Скрипт написан на JQuery. Алерты использую для отладки...
if (ui.click("status")) {
if (ui.getBool("status")) {
GP.SEND("<script>alert('Включено');</script>");
} else {
GP.SEND("<script>alert('Выключено');</script>");
}
}
если делать кастомный код, то он не работает, т.к. уже висит onClick от портала.
а вот как правильно использовать возможности портала, что-то не сообразить)
Никак
т.е. кастомные скрипты не реализовать по клику?
хотел сделать по выключенному чекбоксу скрытие ненужных блоков, вот пример
https://playcode.io/1369159
Реализуй что угодно, но без SEND. SEND работает ТОЛЬКО внутри функции билдера, когда страница ЗАГРУЖАЕТСЯ или когда со страницы запрошен RELOAD
про SEND то понятно, мне непонятно как реализовать?
в примере используется обработчик от JQuery, в портале в коде есть
<input type='checkbox' name='status' id='status' checked onclick='GP_click(this)'>
вот они и конфликтуют походу