WeMOS Flere SSID
Spring til navigation
Spring til søgning
WeMOS WiFi Processor | |
---|---|
WeMOS | Server Connection - Simpel Server - Flere SSID - ESP8266 - Watchdog - Interrupt |
Anvendelse | LED-eksempel - AD-eksempel - Mail - POST metode - Web Publicering |
Dette eksempel tager udgangspunkt i et eksempel fundet ved esp8266learning.com[1].
Formålet er at vise hvordan man kan lade WeMOS prøve at connecte til forskellige netværk.
Samlet kode
#include <ESP8266WiFi.h>
const int networkAntal = 2;
const char* ssid [] = {
"AndroidAP",
"ssid name"
};
const char* password [] = {
"hybh9024",
"ssid password"
};
int ledPin = 2;
WiFiServer server(80);
const int startLength = 4;
const String start_response [] = {
"HTTP/1.1 200 OK",
"Content-Type: text/html",
"",
"<!DOCTYPE HTML>",
};
const int htmlLength = 5;
const String html_response [] = {
"<html>",
"Click <a href=\"/LED=ON\">here</a> turn the LED on pin 2 ON<br>",
"Click <a href=\"/LED=OFF\">here</a> turn the LED on pin 2 OFF<br>",
"<br><br>",
"Led pin is now: "
};
void setup() {
Serial.begin(115200);
delay(10);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
boolean OK = false;
int networks = 0;
while (!OK) {
// Connect to WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid[networks]);
WiFi.begin(ssid[networks], password[networks]);
int antal = 0;
while (WiFi.status() != WL_CONNECTED && antal < 16) {
delay(500);
Serial.print(".");
antal++;
}
if (WiFi.status() == WL_CONNECTED) {
OK = true;
Serial.println("");
Serial.println("WiFi connected");
}
networks++;
if (networks >= networkAntal) {
networks = 0;
}
}
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Match the request
int value = LOW;
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, LOW); // Inverted output Low to turn LED ON
value = HIGH;
}
if (request.indexOf("/LED=OFF") != -1){
digitalWrite(ledPin, HIGH); // Inverted output High to turn LED OFF
value = LOW;
}
// Return the response
for (int n = 0; n < startLength; n++) {
client.println(start_response[n]);
}
for (int n = 0; n < htmlLength; n++) {
client.println(html_response[n]);
}
if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
client.println("</html>");
delay(1);
Serial.println("Client disconnected");
Serial.println("");
}
Server Connection
Selve forbindelsen til netværket tager stadig udgangspunkt i teknikken beskrevet i WeMOS Server Connection, hvor der forbindes til Wifi og der sættes en server op.
Der laves en datastruktur med den netværk man ønsker at prøve igennem og med det tilsvarende passwords:
const int networkAntal = 2;
const char* ssid [] = {
"AndroidAP",
"ssid name"
};
const char* password [] = {
"hyzx1234",
"ssid password"
};
Oprettelse af forbindelse
Der prøves så for hvert netværk i 8 sekunder om der opnås forbindelse, og hvis der ikke gør, så prøves det næste netværk.
Denne kode er placeret i setup():
boolean OK = false;
int networks = 0;
while (!OK) {
// Connect to WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid[networks]);
WiFi.begin(ssid[networks], password[networks]);
int antal = 0;
while (WiFi.status() != WL_CONNECTED && antal < 16) {
delay(500);
Serial.print(".");
antal++;
}
if (WiFi.status() == WL_CONNECTED) {
OK = true;
Serial.println("");
Serial.println("WiFi connected");
}
networks++;
if (networks >= networkAntal) {
networks = 0;
}
}