Skip to content

Простой менеджер WiFi для esp8266 для задания логина-пароля WiFi и режима работы

License

Notifications You must be signed in to change notification settings

GyverLibs/SimplePortal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

latest PIO Foo Foo Foo

Foo

SimplePortal

Простой менеджер WiFi для esp8266 для задания логина-пароля WiFi и режима работы

Для более широких возможностей настройки с веба используй GyverPortal - библиотеку конструктора веб интерфейса с кучей возможностей

Совместимость

esp8266, esp32

Содержание

Установка

  • Библиотеку можно найти по названию SimplePortal и установить через менеджер библиотек в:
    • Arduino IDE
    • Arduino IDE v2
    • PlatformIO
  • Скачать библиотеку .zip архивом для ручной установки:
    • Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
    • Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
    • Распаковать и положить в Документы/Arduino/libraries/
    • (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
  • Читай более подробную инструкцию по установке библиотек здесь

Обновление

  • Рекомендую всегда обновлять библиотеку: в новых версиях исправляются ошибки и баги, а также проводится оптимизация и добавляются новые фичи
  • Через менеджер библиотек IDE: найти библиотеку как при установке и нажать "Обновить"
  • Вручную: удалить папку со старой версией, а затем положить на её место новую. "Замену" делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!

Инициализация

Нет

Использование

void portalStart();     // запустить портал
void portalStop();      // остановить портал
bool portalTick();      // вызывать в цикле
void portalRun(uint32_t prd = 60000);   // блокирующий вызов
byte portalStatus();    // статус: 1 connect, 2 ap, 3 local, 4 exit, 5 timeout

// константы статуса
SP_ERROR            // ошибка
SP_SUBMIT           // отправлены логин-пароль
SP_SWITCH_AP        // сигнал на смену в AP
SP_SWITCH_LOCAL     // сигнал на смену в Local
SP_EXIT             // нажата кнопка выход
SP_TIMEOUT          // вышел таймаут

Хранение настроек

Из скетча доступна переменная (структура) portalCfg:

  • char* SSID[32] - логин
  • char* pass[32] - пароль
  • byte mode - (1 WIFI_STA, 2 WIFI_AP) После отправки данных с портала можно забрать информацию из структуры и/или записать её в EEPROM.

Как работает

demo

  • Библиотека запускает режим SoftAP, запускает DNSServer и ESP8266WebServer.
  • Коннектимся к точке, по умолчанию называется "ESP Config"
  • Откроется страница конфигурации (если не открылась - перейди по 192.168.1.1). На странице можно настроить режим работы ESP, а также сконфигурировать подключение к роутеру (логин-пароль).
  • Кнопка Submit отправляет введённые данные на ESP. После нажатия Submit режим в конфиге переключается в 1 (WIFI_STA).
  • Библиотека не переключает итоговый режим работы esp, кнопки портала Switch AP / Switch Local просто дают сигналы "в скетч".
  • Кнопка Exit просто завершает работу портала.
  • После нажатия любой кнопки или выхода таймаута портал закрывается, сервер останавливается, SoftAP отключается.

Примеры

Блокирующий

#include <ESP8266WiFi.h>
#include <SimplePortal.h>

void setup() {
  Serial.begin(9600);
  delay(3000);
  
  portalRun();  // запустить с таймаутом 60с
  //portalRun(30000); // запустить с кастомным таймаутом
  
  Serial.println(portalStatus());
  // статус: 0 error, 1 connect, 2 ap, 3 local, 4 exit, 5 timeout
  
  if (portalStatus() == SP_SUBMIT) {
    Serial.println(portalCfg.SSID);
    Serial.println(portalCfg.pass);
    // забираем логин-пароль
  }
}

void loop() {
}

Асинхронный

#include <ESP8266WiFi.h>
#include <SimplePortal.h>

void setup() {
  Serial.begin(9600);

  // запускаем портал
  portalStart();
}

void loop() {
  // вызываем в loop
  if (portalTick()) {
    Serial.println(portalStatus());
    if (portalStatus() == SP_SUBMIT) {
      Serial.println(portalCfg.SSID);
      Serial.println(portalCfg.pass);
      // забираем логин-пароль
    }

    // сработает однократно при действии
    // точка будет автоматически выключена
  }
}

Версии

  • v1.0
  • v1.1 - совместимость с ESP32
  • v1.2 - исправлен баг

Баги и обратная связь

При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request'ов!

При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:

  • Версия библиотеки
  • Какой используется МК
  • Версия SDK (для ESP)
  • Версия Arduino IDE
  • Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
  • Какой код загружался, какая работа от него ожидалась и как он работает в реальности
  • В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код

About

Простой менеджер WiFi для esp8266 для задания логина-пароля WiFi и режима работы

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •