// демо с формой, значения компонентов связаны
// с переменными в скетче
#include <GyverPortal.h>
// переменные
bool valSwitch1;
bool valSwitch2;
bool ledState1 = 0;
bool ledState2 = 0;
bool ledState3 = 0;
bool ledState4 = 0;
// билдер страницы
void build() {
String s;
BUILD_BEGIN(s);
//add.AJAX_UPDATE("led1,led2,led3,led4");
add.THEME(GP_DARK);
add.FORM_BEGIN("/update");
add.LABEL("Led-1: "); add.LED_RED("led1", ledState1); add.LED_GREEN("led2", ledState2); add.BREAK();
add.LABEL("Led-2: "); add.LED_RED("led3", ledState3); add.LED_GREEN("led4", ledState4); add.BREAK();
add.LABEL("Switch1: "); add.SWITCH("sw1", valSwitch1); add.BREAK();
add.LABEL("Switch2: "); add.SWITCH("sw2", valSwitch2); add.BREAK();
add.FORM_END();
BUILD_END();
}
GyverPortal portal;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_AP);
WiFi.softAP("My Portal");
portal.start(WIFI_AP); // запускаем портал с настройкой на режим AP
// подключаем билдер и запускаем
portal.attachBuild(build);
portal.start();
portal.list.init(2);
// ????
// ????
portal.list.add(&valSwitch1, "sw1", T_CHECK);
portal.list.add(&valSwitch2, "sw2", T_CHECK);
}
void loop() {
portal.tick();
// одна из форм была submit
if (portal.form()) {
// проверяем, была ли это форма "/update"
if (portal.form("/update")) {
// выводим для отладки
Serial.print(valSwitch1);
Serial.print(valSwitch2);
Serial.print(valSwitch2);
Serial.println(ledState1);
Serial.println(ledState2);
Serial.println(ledState3);
Serial.println(ledState4);
// выполняем условие в зависимости от valSwitch1 и valSwitch2
if (valSwitch1 == 0 && valSwitch2 == 0) {
ledState1 = 0; // присваиваем переменным значения
ledState2 = 0;
ledState3 = 0;
ledState4 = 0;
}
if (valSwitch1 == 1 && valSwitch2 == 0) {
ledState1 = 1;
ledState2 = 0;
ledState3 = 0;
ledState4 = 1;
}
// .......
}
}
}