ESP8266 - Ukladanie hesiel pomocou WiFiManager

Zápisník experimentátora

Hierarchy: ESP8266

Dnes sa budeme venovať zaujímavej knižnici, ktorá umožňuje ukladať heslo k WiFi. Vďaka tomu môžete používať jeden program pre všetky svoje ESP8266. V ňom nemáte žiadne heslo. Až keď svoje ESP8266 prinesiete na miesto určenia, zapnete ho a skonfigurujete ho pomocou mobilného telefónu (alebo notebooku).

Znie to čarovne, ale nie je v tom žiadna mágia. Iba vtipné využitie možností ESP8266. To vie podľa potreby vytvárať prístupové WiFi body a vie vytvoriť aj HTTP server a DNS server. Pomocou týchto nástrojov vie užívateľovi zobraziť konfiguračnú stránku a údaje z nej uložiť do svojej flash pamäte. Pri nasledovnom spustení sa pokúša tieto údaje využiť na opätovné pripojenie. Pokiaľ sa to nepodarí, môžete WiFi pripojenie opäť nastaviť.

Použité súčiastky

Ja som využil NodeMCU (v. 0.9), ale rovnaké výsledky by ste dosiahli s ľubovolnou doskou, na ktorej je ESP8266.

WiFiManager

Knižnicu WiFiManager si môžete nainštalovať pomocou správcu knižníc. V čase písania článku bola aktuálna verzia knižnice 0.12. Spolu s knižnicou sa nainštaluje niekoľko vzorových príkladov. Je vhodné, aby ste sa s príkladmi oboznámili.

Pri používaní knižnice by vás nemalo prekvapiť, ak ste sa predtým pripojili k WiFi na svojom ESP8266, že sa knižnica automaticky pripojí na Internet bez toho, že by ste niečo nastavovali. Knižnica dokáže využiť vaše posledné pripojenie a použije tieto údaje.

Zobrazenie konfiguračného portálu

Začnime s príkladom, ktorý zobrazí konfiguračný portál. Nebudeme sa v tomto príklade zaoberať s bezpečnosťou a otvoríme si portál bez hesla. Tento príklad použijeme iba na to, aby sme videli, ako presne konfigurácia prebieha.

#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 nahratí programu do ESP8266 sa automaticky vytvorí pripojovací bod WiFi s menom ArduinoAP. Použite svoj mobil a pripojte sa k tomuto bodu. Potom v mobile otvorte prehliadač Internetu a otvorte v ňom ľubovoľnú stránku. Stačí napísať ľubovoľné slovo a ESP8266 vás vďaka vytvorenému DNS serveru automaticky presmeruje na svoju úvodnú stránku.

Vyberiete si prvú voľbu a zobrazí sa zoznam dostupných WiFi. Vyberiete niektorý z nich, vložíte prístupové heslo a uložíte konfiguráciu. Od tejto chvíle sa bude vedieť ESP8266 automaticky pripojiť. Na to je ale vhodnejšie použiť niektorý z nasledovných programov.

Automatické pripojenie k WiFi

Ako najjednoduchší spôsob pripojenia sa uvádza nasledovný príklad. Automaticky sa pokúsi pripojiť a ak sa to nepodarí, vytvorí 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 stlačení tlačidla

Takýto spôsob použitia sa mi strašne páči. Konfiguračný portál sa objaví iba po stlačení tlačidla. Do ukážky som pridal aj použitie prí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 sa nachádza na serveri GitHub.


23.07.2017


Menu