/SimplePortal

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

Primary LanguageC++MIT LicenseMIT

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
  • Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
  • Какой код загружался, какая работа от него ожидалась и как он работает в реальности
  • В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код