GyverPortal

Daber

✩✩✩✩✩✩✩
13 Дек 2022
10
0
Всем привет, ребят, подскажите, как прикрутить свой файл config.json в data, которая spiffs, хочу использовать совместно с arduinoJson, но сейчас что-то не могу завести все это дело.
Если есть пример использования библиотеки arduinoJson совместно с Gyverportal, буду весь благодарен!
Помогите, пожалуйста, совсем в тупик зашёл.
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
@Daber,
пример использования библиотеки arduinoJson совместно с Gyverportal
Берёшь и используешь. Эти библиотеки никак не пересекаются, каждая делает свою задачу
 

Daber

✩✩✩✩✩✩✩
13 Дек 2022
10
0
@AlexGyver, во всех своих пролётах я использую файл в data config.json для хранения всего, от ip адреса лана до положения свича, но сейчас появляется постоянный error, даже если использовать обычный пример из библиотеки arduinoJson. Может подскажете, как можно создать свой файл config.json в папке data, или достаточно просто поместить его и все, прописав путь в переменную? Или я уже запутался или просто не понимаю.
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
Теперь у меня отображается только нужная мне директория.
Я добавил в свой менеджер библиотек, так что не парься) спасибо за идею, но сделал по другому. Менеджер в 3.4 умеет открывать и переименовывать файлы
1670934420018.png
 

Metalismatic

✩✩✩✩✩✩✩
13 Дек 2022
2
0
Добрый вечер! Столкнулся с необычной проблемой при использовании примера обработки нажатий "actionForm", при сокращении кода до состояния изложенного ниже(убрал ненужные поля, типо текстового, спиннера и т.п.) то в мониторе порта все начинает обрабатываться только со второго нажатия на кнопку submit, что очень странно. Менял соответственно в void build() { и
void action() {
мной измененный actionForm:
// демо с формой, значения компонентов связаны с переменными в скетче

#define AP_SSID ""
#define AP_PASS ""

#include <GyverPortal.h>
GyverPortal portal;

// переменные для получения данных с формы
bool valCheck;
bool valSwitch;
String valText;
int valNum;
char valPass[10];
float valSpin;
int valSlider;
GPdate valDate;
GPtime valTime;
GPcolor valCol;
int valSelect;

// конструктор страницы
void build() {
  GP.BUILD_BEGIN();
  GP.THEME(GP_DARK);

  GP.FORM_BEGIN("/update");
  GP.TITLE("Title", "t1");
  GP.HR();

  GP.LABEL("Check: ");
  GP.CHECK("ch", valCheck);     GP.BREAK();
  GP.LABEL("Switch: ");
  GP.SWITCH("sw", valSwitch);   GP.BREAK();

  GP.SLIDER("sld", valSlider, 0, 10); GP.BREAK();

  GP.TIME("time", valTime);     GP.BREAK();
  GP.COLOR("col", valCol);      GP.BREAK();
  GP.SELECT("sel", "val 1,val 2,val 3", valSelect);  GP.BREAK();
 
  GP.SUBMIT("Submit");
  GP.FORM_END();

  GP.BUILD_END();
}

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(AP_SSID, AP_PASS);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(WiFi.localIP());

  // подключаем конструктор и запускаем
  portal.attachBuild(build);
  portal.attach(action);
  portal.start();
}

void action() {
  // одна из форм была submit
  if (portal.form()) {
    // проверяем, была ли это форма "/update"
    if (portal.form("/update")) {
      // забираем значения и обновляем переменные
      // 1. получаем и присваиваем вручную
      valCheck = portal.getBool("ch");
      valSwitch = portal.getBool("sw");


      // 2. также можно переписать через copyXX

      portal.copyInt("sld", valSlider);

      portal.copyTime("time", valTime);
      portal.copyColor("col", valCol);
      portal.copyInt("sel", valSelect);
      
      // выводим для отладки
      Serial.print(valCheck);
      Serial.print(',');
      Serial.print(valSwitch);
      Serial.print(',');

      Serial.print(valSlider);
      Serial.print(',');

      Serial.print(valTime.encode());
      Serial.print(',');
      Serial.print(valCol.encode());
      Serial.print(',');
      Serial.println(valSelect);
    }
  }
}

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

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
@Metalismatic, добрый, у меня ваш код работает корректно с 1 раза. Но у меня чуть переделанная библиотека, но формы в ней не менялись
 

Metalismatic

✩✩✩✩✩✩✩
13 Дек 2022
2
0
@AlexGyver,тогда ничего не понимаю) Была надежда, что я накосячил, но проверил уже несколько раз.
 

Shakshukka035

✩✩✩✩✩✩✩
26 Апр 2022
4
1
Всех приветствую!
Кто нибудь сталкивался с проблемой что в режиме точки доступа esp32 не работают графики? В режиме STA всё работает.
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
@Shakshukka035,нужно поставить у графика флаг local, последним аргументом
 

shura2

✩✩✩✩✩✩✩
19 Мар 2021
6
0
@AlexGyver,
Сделать свой кастомный компонент как в примере customComponents и хранить его рядом со скетчем
Понял. спасибо.

Еще есть вопросы:
1. Есть ли возможность сохранять значения элементов в памяти МК? т.е. поставил галочку на чек боксе, сделал ребут, а значение восстановилось
2. как управлять тем же чек боксом "извне" и как потом сделать рефреш страницы? Поясню зачем - управление хочу сделать с экранчика и со страницы, что бы значения менялись и там и там синхронно.
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
@pingemall,это можно делать самостоятельно через javascript, вариантов использования слишком много
 

novik1

✩✩✩✩✩✩✩
23 Ноя 2022
26
0
@AlexGyver,
но он же конченный: там даже в библиотеке "ESP8266WebServer.h - Dead simple web-server"

Его тяжело масштабировать: ограниченное число клиентов, нет к примеру возможности при передаче .html подменять переменные по маске %val%.

*вот так всегда: берется конченный веб-сервер, а потом сразу же тяжелые на вебсокеты уходят)
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
@novik1, "Dead simple"не переводится как конченный, он "смертельно простой" =)
  • Переход на asynchWebServer требует установки ещё 5-10 сторонних библиотек, не все из которых есть в менеджере библиотек. Самого asyncWebServer там тоже кстати нет. Я хз зачем так делать, видимо это очень удобно, но я не оценил.
  • Я с asyncWebServer знаком бегло, и так же бегло не понял как передавать страницу кусками, в стандартной библиотеке для этого есть готовый инструмент. В asyncWebServer его нет, со стандартным сервером он несовместим, также нет абсолютно никаких внятных примеров по "углублённому" использованию. После изучения 4х стандартных примеров отпало всякое желание переходить на асинк.
Но если кто-нибудь сделает в виде "опции" (дефайном включать) - буду только рад =) сам пока точно трогать его не планирую
 
Изменено:
  • Лойс +1
Реакции: Старик Похабыч

novik1

✩✩✩✩✩✩✩
23 Ноя 2022
26
0
мы точно про этот async?


5-10 сторонних библиотек
2 всего)

не все из которых есть в менеджере библиотек. Самого asyncWebServer там тоже кстати нет. Я хз зачем так делать, видимо это очень удобно, но я не оценил
потому что позиционируется библиотека как "не для школьников"))))
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
@novik1,
Навскидку сам async + asynctcp + async mdns + какие нибудь костыли для OTA + какие-то модули для esp32

позиционируется библиотека как "не для школьников"))))
поэтому её нет в менеджере библиотек? Ну ок

мы точно про этот async?
Да. Тут 4 примера + ридми из 1.5к строк
 

novik1

✩✩✩✩✩✩✩
23 Ноя 2022
26
0
Навскидку сам async + asynctcp + async mdns + какие нибудь костыли для OTA + какие-то модули для esp32
мы же только про веб-сервер? мднс то и обновление прошивки каким боком?

неожиданно если честно.

т.е. всего 2 библиотеки "не для школьников" (там тупо отсылка к platformio) поставили в тупик???
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
мы же только про веб-сервер?
Мы про то, почему portal не на async. А в портале есть mdns, ota и всякое другое.

всего 2 библиотеки
Какие две библиотеки?

не для школьников
Каких школьников, причём тут они?

тупо отсылка к platformio
Чего?

поставили в тупик???
Меня ставят в тупик такие вопросы. Почему portal не на async я ответил в самом первом ответе, даже по пунктам. Если можешь/хочешь помочь - буду рад, а хрень всякую писать пожалуйста не надо, мне её достаточно пишут.
 

novik1

✩✩✩✩✩✩✩
23 Ноя 2022
26
0
Меня ставят в тупик такие вопросы. Почему portal не на async я ответил в самом первом ответе, даже по пунктам. Если можешь/хочешь помочь - буду рад, а хрень всякую писать пожалуйста не надо, мне её достаточно пишут
в самом первом посте был скрин "я так хочу".

Какие две библиотеки?
3й и 4й абзацы


и между прочим эти 2 библиотеки - это соответственно для 8266 и 32.

т.е. для отдельно взятого мк это всего лишь одна дополнительная библиотека
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
Изменено:

novik1

✩✩✩✩✩✩✩
23 Ноя 2022
26
0
в самом первом посте был скрин "я так хочу".
вот с этим то что делать?

не разобравшись, решил проскочить на хайпе?)))

кстати, пример со статусом не компилируется на 8266

Пусть будет так.
откуда такое отношение то?