GyverPortal

DAK

★★★✩✩✩✩
8 Окт 2020
517
137

@gorlanovmax,
Немного не понимаю. Сперва подключается, открывается вафля, где вы одобряете подключение к сети. И Вы хотите, чтобы после этого веб сервер дал некий волшебный ответ, который должен заставить приложение вафли открыть ссылку в браузере?
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@gorlanovmax, если код твой, не так значит понял сообщение. На Андроиде тоже открывается внутренняя страница, после подключения к точке. Удобно, не надо открывать браузер. Работает, наверное, через webview.
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@ASM,

Да, страница работает и запросы отсылает.
Но все равно это не очень корректно.
На десктопе тоже висит по адресу http://www.msftconnecttest.com/redirect
Логично что после открытия, должна быть автоматическая переадресация на правильный адрес или IP
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137
Не знаю как айфон, в дроиде всё также, просто открытие в вафли по факту для того, чтобы пользователь разрешил использование данной сети, мне приходится нажимать "использовать эту сеть" и не ждёт никаких паролей и прочего. Страница работает, однако кажется проблемы с загрузкой и уплоадом файлов. После подтверждения использования я перехожу на ту же ссылку, которая в приложении, только через хром. Это не проблема портала, сомневаюсь, что есть такая мего ссылка, которая заставила бы перебросить из приложения вафли в браузер.
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@DAK,

Ну смотри, приведу пример на десктопе.
Подключаюсь к wi-fi в аэропорту.
Сама сеть открытая.
После подключения открывается в браузере страница http://www.msftconnecttest.com/redirect
В ней запрашиваю смс на телефон для подтверждения личности, ввожу код и нажимаю ок.
Сервер проверяет данные, потом пишет "вы успешно подключились" и переадресует на страницу аэропорта (типа pulkovoairport.ru)

На телефоне не помню сейчас как это выглядит
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137

@gorlanovmax,
Вот именно, что на десктопе ты изначально в браузере начинаешь работать, поэтому тут нет проблем. На телефоне сперва через приложуху вафли подключается, потом заходишь в браузер и работаешь.
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137

@gorlanovmax,
А Вы имя портала при запуске указываете? Можно кусок кода инициализации портала
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137
@gorlanovmax, странно всё это. Интересно заморочится с mDNS. По идее я бы сделал portal.start("esp32.local") и по идее при подключении по http://esp32.local он должен был переходить на этот самый контроллер, тут я немного плаваю, надо проверять. Пока некогда. Пока сам не потрогаю, не смогу помочь, извини
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@DAK,
Так он и при указании просто portal.start("esp32")
При вводе адреса http://esp32.local заходит на контроллер
Здесь же вопрос именно в автоматическом открытии после подключения к wi-fi
Чтобы была переадресация на этот адрес
 

Kbaccok

✩✩✩✩✩✩✩
28 Окт 2022
4
0
Народ, прошу помощи. Если не составит труда, можете накидать пример как:
  • вывести данные с Пина в веб морду. (
  • как изменять значения переменных из веб морды. (Желательно по кнопке изменить сразу несколько переменных

Хотел прикрутить пид регулятор к веб форме, но вышло так, что веб морда не запускается. Буду крайне благодарен. С меня пиво если будут разъяснения небольшие )

П.С. Приложил код, который работает. Регулировать необходимо коэффициенты.
Я не могу понять:
1. Как из области ввода GP.NUMBER_F передать введенное значение в regulator.Kp по нажатию кнопки.
2. Как Динамически выводить значения текущей температуры therm.getTempAverage() (для мониторинга)

C++:
#include <GyverNTC.h>
GyverNTC therm(A0, 100000, 3950, 25, 7500);  // пин, R термистора, B термистора, базовая температура, R резистора
uint32_t TimerTemp;

#include "GyverPID.h"
GyverPID regulator(0.1, 0.05, 0.01, 10);  // коэф. П, коэф. И, коэф. Д, период дискретизации dt (мс) (можно П, И, Д, без dt)
float Kp, Ki, Kd;

void setup() {
  Serial.begin(9600);
  regulator.setDirection(NORMAL); // направление регулирования (NORMAL/REVERSE). ПО УМОЛЧАНИЮ СТОИТ NORMAL
  regulator.setLimits(0, 255);    // пределы (ставим для 8 битного ШИМ). ПО УМОЛЧАНИЮ СТОЯТ 0 И 255
  regulator.setpoint = 50;        // сообщаем регулятору температуру, которую он должен поддерживать

  // в процессе работы можно менять коэффициенты
  regulator.Kp = 5.2;
  regulator.Ki += 0.5;
  regulator.Kd = 0;
}

void loop() {
  int (therm.getTempAverage());                 // читаем с датчика температуру
  regulator.input = (therm.getTempAverage());   // сообщаем регулятору текущую температуру
  analogWrite(D5, regulator.getResultTimer());  // отправляем на мосфет
  }

}
 
Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
Добавь картинок в пост выше, чтобы понятно было, что там настраиваешь)
 
  • Лойс +1
Реакции: Kbaccok

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
по нажатию кнопки
я вот это не понимаю) по нажатию какой кнопки) этой?)
C++:
GP.SUBMIT(текст);  // кнопка отправки формы
Как Динамически выводить значения текущей температуры therm.getTempAverage() (для мониторинга)

Как из области ввода GP.NUMBER_F передать введенное значение в regulator.Kp
C++:
bool copyFloat(имя, float& t);
C++:
bool copyFloat(куда сохранить, значение из формы);
 
Изменено:

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
Доброго дня,

Имею проблему, не монтируется spiffs
Причем не монтируется, как при использовании библиотеки LittleFS, так и при использовании библиотеки SPIFFS

Проверено на версиях Arduino 1.8.19 и 2.0.1
Ядро ESP стоит 2.0.6

При использовании LittleFS в стандартном примере OTACustom получаю:
./components/esp_littlefs/src/littlefs/lfs.c:1229:error: Corrupted dir pair at {0x1, 0x0}
E (649) esp_littlefs: mount failed, (-84)
E (653) esp_littlefs: Failed to initialize LittleFS
[ 660][E][LittleFS.cpp:95] begin(): Mounting LittleFS failed! Error: -1
FS Error

При использовании SPIFFS в стандартном примере OTACustom получаю:
E (645) SPIFFS: mount failed, -10025
[ 648][E][SPIFFS.cpp:89] begin(): Mounting SPIFFS failed! Error: -1
FS Error
[ 650][E][vfs_api.cpp:24] open(): File system is not mounted

Дальше начинается еще интереснее.
Скетч работает.
Обновление с вэб-проходит нормально.
При этом доступа к SPIFFS нет, при работе скетча, надо сохранить файл и потом его прочитать.
В этом момент естественно получаю ошибку: File system is not mounted
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137

@gorlanovmax,
Сперва надо с помощью утилиты так сказать отформатировать флешку, в зависимости от файловой системы надо использовать ту или иную утилиту. Плагин добавляется в Ардуино ИДЕ и потом появляются кнопки в инструментах.
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137

@Kbaccok,
В куске кода нет ничего про функции портала, я правильно понимаю? Или я не нашёл эти куски кода? Можно кусок кода, где веб морда не работает?
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@DAK,

все сделано.
Сначала запускал пример из библиотеки LittleFS
Все отрабатывает нормально и без ошибок.
Читает и записывает.

Победил короче, но прикол странный.
В моем скетче первыми тремя строками шли дефайны по DNS
Выглядело так:
Не работает:
#define GP_NO_DNS // отключаем DNS
#define GP_NO_DOWNLOAD // отключаем возможность скачивания файлов
#define GP_NO_MDNS // отключаем адресации по имени страницы

#include <Arduino.h>
#include <LittleFS.h> // подключить библиотеку файловой системы (до #include GyverPortal)
#include <GyverPortal.h> // подключаем библиотеку вэб-интерфейса
GyverPortal portal(&LittleFS);;  // передать ссылку на fs (SPIFFS/LittleFS)
Как только перенес дефайны после подключения библиотек, все заработало
Работает:
#include <Arduino.h>
#include <LittleFS.h> // подключить библиотеку файловой системы (до #include GyverPortal)
#include <GyverPortal.h> // подключаем библиотеку вэб-интерфейса
GyverPortal portal(&LittleFS);;  // передать ссылку на fs (SPIFFS/LittleFS)

#define GP_NO_DNS // отключаем DNS
#define GP_NO_DOWNLOAD // отключаем возможность скачивания файлов
#define GP_NO_MDNS // отключаем адресации по имени страницы
 

Роман_Л

✩✩✩✩✩✩✩
23 Фев 2021
5
0
Доброго дня! Отличная библиотека, спасибо большое, пользуюсь с версии 1.2.
Вопрос: Как все таки добавить график в режиме точки доступа? Вроде указано, что в версии 3.2 можно.
Тестировал на esp8266 и esp32, в режиме подключения к сети все ок. Переделываю на точку доступа, загружаю папку data в память (файлы есть и открываются по именам в браузере), но графиков нет.
C++:
// тест графиков AJAX_PLOT, вывод случайных значений

#include <LITTLEFS.h>
#include <GyverPortal.h>
GyverPortal portal(&LITTLEFS);

// конструктор
void build() {
  GP.BUILD_BEGIN();
  GP.THEME(GP_DARK);
  GP.AJAX_PLOT("plot1", 1, 20, 1000);
  GP.AJAX_PLOT_DARK("plot3", 3, 20, 1000);
  GP.BUILD_END();
}

void setup() {
  Serial.begin(115200);
  char ssid_point[40] = "HotControl";
  char password_point[40] = "0123456789";
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid_point, password_point);
  if (!LITTLEFS.begin()) Serial.println("FS Error");
  // подключаем конструктор и запускаем
  portal.attachBuild(build);
  portal.attach(action);
  portal.uploadAuto(true);
  portal.start();
}

void action() {
  if (portal.update("plot1")) portal.answer(random(200));
  if (portal.update("plot3")) {
    int answ[] = {random(200), random(200), random(200)};
    portal.answer(answ, 3);
  }
}

void loop() {
  portal.tick();
}
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137
@gorlanovmax, Вы же шутите! то есть дефайны должны быть до подключения, иначе они не работают, но вот эта штука, это прям издевательство
#define GP_NO_DOWNLOAD // отключаем возможность скачивания файлов
Вы сами отключаете. Ещё, надеюсь ранее, когда Вы писали про проблемы редиректов и прочего, Вы же не использовали дефайны для DNS. У меня крыша едет, наверное надо весь код спрашивать.
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137
@Роман_Л,
Кидается в глаза следующее:
C++:
#include <LittleFS.h>
GyverPortal portal(&LittleFS);
if (!LittleFS.begin()) Serial.println("FS Error");
//Смущает немного регистр(есть подозрение, что используется устаревшее ядро для esp)
Для работы графиков надо в файловую систему положить файлы
/gp_data/AJAX_PLOT.js
/gp_data/AJAX_PLOT_DARK.js

Ещё не забудьте включить downloadAuto в setup()
C++:
portal.downloadAuto(true);  // автоскачивание
И да, если верить конструктору, то по умолчанию он работает в режиме онлайн (то есть библа тянется из Инета), Вам же надо сказать графику, что его надо запускать локально

C++:
GP.AJAX_PLOT("plot1", 1, 20, 1000,400,1);
GP.AJAX_PLOT_DARK("plot3", 3, 20, 1000,400,1);
 
Изменено:

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@DAK,

А какое отношение #define GP_NO_DOWNLOAD имеет к работе с хранилищем?
Если я правильно понимаю описание, это возможность скачивания файлов с хранилища.

Когда писал про редиректы, все эти дефайны были закомментированы.

Также обращу внимание, что на текущий момент, при расположении дефайнов после подключения библиотеки, все работает.
DNS и mDNS отключены
1667195965199.png
 

Вложения

Роман_Л

✩✩✩✩✩✩✩
23 Фев 2021
5
0
@DAK,
Спасибо! Все заработало!
На esp8266 без ошибок и проблем.
На esp32 обновил ядро на последнюю версию 2.0.5 что по ссылке https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json , только почему то указано что ESP32 v3+. Файлы загрузил, при запуске скетча в терминале:
./components/esp_littlefs/src/littlefs/lfs.c:1229:error: Corrupted dir pair at {0x0, 0x1}
E (5112) esp_littlefs: mount failed, (-84)
E (5113) esp_littlefs: Failed to initialize LittleFS
FS Error
Но запускается точка доступа и графики обновляются и файлы по именам в браузере открываются.
P.S. GP.AJAX_PLOT("plot1", 1, 20, 1000,400,1); - наверно в wiki нужно добавить о последнем параметре информацию
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@Роман_Л,

Вам надо сделать также как и мне.
Сначала залейте на плату пример из библиотеки LittleFS
LittleFS_test.
Он отформатирует SPIFFS

Непонятно только, почему если в скетче с порталом указать при подключении хранилища указание на форматирование хранилища в случае ошибки, оно все равно не форматируется
C++:
  if (!LittleFS.begin(true)) {
    Serial.println("FS Error"); // подключаем хранилище
  }
И проверьте в Arduino, "Инструменты" - "Erase all flash before upload sketch"
Должно стоять "Disabled"