Пока сделал как в примере к GyverPortal.приложи код. Быстрее ответим.
В конце setup'а запускаю log
C++:
ui.log.start(30); // передали размер буфера log'a
И пока писал этот ответ, то понял, где у меня косяк: открывал лог в самом начале конструктора главной страницы, из-за этого лог и показывался везде и сверху.
C++:
void build() {
GP.BUILD_BEGIN(400); // начать построение, ширина колонки 350px (по умолчанию)
GP.setTimeout(3000); // таймаут ожидания ответа сервера для текущей страницы (вызывать в конструкторе сразу после BUILD BEGIN), мс [int] (умолч. 1000)
GP.THEME(GP_DARK);
//GP.THEME(GP_LIGHT);
// #if (LOG_ENABLE == 1)
// GP.AREA_LOG(5); // 5 строк
// GP.AREA_LOG(строк, период, ширина); // + ширина строкой "100px", "25%" и так далее [строка]
// Прототип: GP.AREA_LOG(5, 1000, "");
// #endif
GP.PAGE_TITLE("WiFi Weather Clock"); // переименовать окно в браузере [строка]
GP.TITLE("WiFi Weather Clock"); // заголовок
GP.ONLINE_CHECK(); // невидимый компонент. Проверка связи с esp, в случае отсутствия связи в названии вкладки появится символ 🚫, GP.ONLINE_CHECK(период); // + период проверки в мс [int] (умолч. 5000)
GP.NAV_TABS_LINKS("/,/graphics,/settings,/sys_info,/ota_update,/log", "Главная,Графики,Настройки,Информация,Обновление,Лог"); // блок с кнопками-ссылками
C++:
//---------------------- LOG START -----------------------------
} else if (ui.uri("/log")) { // LOG
#if (LOG_ENABLE == 1)
GP.AREA_LOG(20, 1000, "350px"); // 20 строк, обновление раз в 1 сек., ширина окна лога 350 пикс.
// GP.AREA_LOG(строк, период, ширина); // + ширина строкой "100px", "25%" и так далее [строка]
// Прототип: GP.AREA_LOG(5, 1000, "");
#endif
//---------------------- LOG END -----------------------------

Когда нужно в основном коде вместе с логом для Serial.print, отсылаю мессагу в лог портала.
C++:
ui.log.println("Save default settings to file OK!");
при нажатии вкладки "Лог" заново запускается инициализация окна лога.
C++:
GP.AREA_LOG(20, 1000, "350px"); // 5 строк
Изменено:
