ESP8266 - Ukládání hesel pomocí WiFiManager

Zápisník experimentátora

Hierarchy: ESP8266

Dnes se budeme věnovat zajímavé knihovně, která umožňuje ukládat heslo k WiFi. Díky tomu můžete používat jeden program pro všechny své​ ESP8266. V něm nemáte žádné heslo. Teprve když své ESP8266 přinesete na místo určení, zapnete ho a zkonfigurujete ho pomocí mobilního telefonu (nebo notebooku).

Zní to kouzelně, ale není v tom žádná magie. Pouze vtipné využití možností ESP8266. To umí podle potřeby vytvářet přístupové WiFi body a umí vytvořit i HTTP server a DNS server. Pomocí těchto nástrojů umí uživateli zobrazit konfigurační stránku a údaje z ní uložit do své flash paměti. Při následujícím spuštění se pokouší tyto údaje využít k opětovnému připojení. Pokud se to nepodaří, můžete WiFi připojení opět nastavit.

Použité součástky

Já jsem využil NodeMCU (v. 0.9), ale stejné výsledky byste dosáhli s libovolnou deskou, na níž je ESP8266.

WiFiManager

Knihovnu​ WiFiManager si můžete nainstalovat pomocí správce knihoven. V době psaní článku byla aktuální verze knihovny 0.12. Spolu s knihovnou se nainstaluje několik vzorových příkladů. Je vhodné, abyste se s příklady seznámili.

Při používání knihovny by vás nemělo překvapit, pokud jste se předtím připojili k WiFi na svém ESP8266, že se knihovna automaticky připojí k Internetu, aniž byste něco nastavovali. Knihovna dokáže využít vaše poslední připojení a použije tyto údaje.

Zobrazení konfiguračního portálu

Začněme s příkladem, který zobrazí konfigurační portál. Nebudeme se v tomto příkladu zabývat s bezpečností a otevřeme si portál bez hesla. Tento příklad použijeme pouze na to, abychom viděli, jak přesně konfigurace probíhá.

#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>

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

  WiFiManager wifiManager;
  wifiManager.startConfigPortal("ArduinoAP");

  //if you get here you have connected to the WiFi
  Serial.println("connected...");
}

void loop() {
}

Po nahrání programu do ESP8266 se automaticky vytvoří připojovací bod WiFi se jménem ArduinoAP. Použijte svůj mobil a připojte se k tomuto bodu. Potom v mobile otevřete prohlížeč Internetu a otevřete v něm libovolnou stránku. Stačí napsat libovolné slovo a ESP8266 vás díky vytvořenému DNS serveru automaticky přesměruje na svou úvodní stránku.

Vyberete si první volbu a zobrazí se seznam dostupných WiFi. Vyberete některý z nich, vložíte přístupové heslo a uložíte konfiguraci. Od této chvíle se bude vědět ESP8266 automaticky připojit. Na to je ale vhodnější použít některý z následujících programů.

Automatické připojení k WiFi

Jako nejjednodušší způsob připojení se uvádí následující příklad. Automaticky se pokusí připojit a pokud se to nepodaří, vytvoří konfigurační portál.

#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>

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

  WiFiManager wifiManager;
  wifiManager.autoConnect("ArduinoAP");

  //if you get here you have connected to the WiFi
  Serial.println("connected...");
}

void loop() {
}

Konfigurační portál po stisknutí tlačítka

Takový způsob použití se mi strašně líbí. Konfigurační portál se objeví pouze po stisknutí tlačítka. Do ukázky jsem přidal i použití přístupového hesla.

#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>

#define TRIGGER_PIN 0

void setup() {
  Serial.begin(115200);
  pinMode(TRIGGER_PIN, INPUT_PULLUP);
}

void loop() {
  if(digitalRead(TRIGGER_PIN) == LOW) {
    WiFiManager wifiManager;

    if(!wifiManager.startConfigPortal("ArduinoAP","secret_password") {
      Serial.println("failed to connect and hit timeout");
      delay(3000);
      //reset and try again
      ESP.reset();
      delay(5000);
    }
    Serial.println("connected...");
  }
}

Zdrojový kód

Zdrojový kód se nachází na serveru GitHub.


23.07.2017


Menu