Здравствуйте!
Попытался скрестить два скетча из примеров: GyverPortal - WiFiLogin и GyverHub - Basic
Идея в том, что бы при старте и нажатой кнопке забить настройки сети, а при старте и отжатой кнопке - запустить основное тело программы.
Примеры запускал по отдельности - все работает, но при скрещивании ошибка компиляции.
Подскажите куда копать!
Текст программы и отчета ошибок приложил.
Попытался скрестить два скетча из примеров: GyverPortal - WiFiLogin и GyverHub - Basic
Идея в том, что бы при старте и нажатой кнопке забить настройки сети, а при старте и отжатой кнопке - запустить основное тело программы.
Примеры запускал по отдельности - все работает, но при скрещивании ошибка компиляции.
Подскажите куда копать!
Текст программы и отчета ошибок приложил.
C++:
// быстрый старт
#include <GyverPortal.h>
#include <EEPROM.h>
struct LoginPass {
char ssid[20];
char pass[20];
};
LoginPass lp;
#include <Arduino.h>
// подключаем библиотеку и настраиваем устройство
#include <GyverHub.h>
uint8_t tab = 0;
GHbutton b1, b2;
GyverHub hub("MyDevices", "ESP8266", "");
// иконки
// https://fontawesome.com/v5/cheatsheet/free/solid
// https://fontawesome.com/v5/search?o=r&m=free&s=solid
void buildsetup() {
GP.BUILD_BEGIN();
GP.THEME(GP_DARK);
GP.FORM_BEGIN("/login");
GP.TEXT("lg", "Login", lp.ssid);
GP.BREAK();
GP.TEXT("ps", "Password", lp.pass);
GP.SUBMIT("Submit");
GP.FORM_END();
GP.BUILD_END();
}
void build() {
hub.BeginWidgets();
hub.Tabs(&tab, F("Ручное,Автоматическое"));
hub.WidgetSize(50);
hub.Button(&b1, F("Открыть"), GH_GREEN);
hub.Button(&b2, F("Закрыть"), GH_RED);
hub.WidgetSize(100);
hub.LED(0, F("Протечка"));
}
void setup() {
Serial.begin(115200);
// читаем логин пароль из памяти
EEPROM.begin(100);
EEPROM.get(0, lp);
// если кнопка нажата - открываем портал
pinMode(D1, INPUT_PULLUP);
if (digitalRead(D1)) loginPortal();
// пытаемся подключиться
Serial.print("Connect to: ");
Serial.println(lp.ssid);
#ifdef GH_ESP_BUILD
WiFi.mode(WIFI_STA);
WiFi.begin(lp.ssid, lp.pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected! Local IP: ");
Serial.println(WiFi.localIP());
#endif
hub.onBuild(build); // подключаем билдер
hub.begin();
}
void loginPortal() {
Serial.println("Portal start");
// запускаем точку доступа
WiFi.mode(WIFI_AP);
WiFi.softAP("WiFi Config");
// запускаем портал
GyverPortal ui;
ui.attachBuild(buildsetup);
ui.start();
ui.attach(action);
// работа портала
while (ui.tick());
}
void action(GyverPortal& p) {
if (p.form("/login")) { // кнопка нажата
p.copyStr("lg", lp.ssid); // копируем себе
p.copyStr("ps", lp.pass);
EEPROM.put(0, lp); // сохраняем
EEPROM.commit(); // записываем
WiFi.softAPdisconnect(); // отключаем AP
}
}
void loop() {
hub.tick(); // обязательно тикаем тут
Serial.print(tab);
Serial.print(b1);
Serial.println(b2);
}
Вложения
-
2.6 KB Просмотры: 3
-
40.4 KB Просмотры: 4