Hendrik Langer
8 years ago
4 changed files with 142 additions and 4 deletions
@ -0,0 +1,109 @@ |
|||
/* WiFi
|
|||
* |
|||
* Arduino ESP32 mDNS responder sample |
|||
*/ |
|||
|
|||
#include "Arduino.h" |
|||
|
|||
#include <WiFi.h> |
|||
#include <ESPmDNS.h> |
|||
#include <WiFiClient.h> |
|||
|
|||
#include "hardware.h" |
|||
|
|||
#include "wifi.h" |
|||
|
|||
using namespace std; |
|||
|
|||
Wifi::Wifi() { |
|||
this->server = WiFiServer(80); |
|||
} |
|||
|
|||
void Wifi::init() { |
|||
WiFi.begin(WIFI_SSID, WIFI_PASSWORD); |
|||
|
|||
// Wait for connection
|
|||
while (WiFi.status() != WL_CONNECTED) { |
|||
delay(500); |
|||
Serial.print("."); |
|||
} |
|||
Serial.println(""); |
|||
Serial.print("Connected to "); |
|||
Serial.println(WIFI_SSID); |
|||
Serial.print("IP address: "); |
|||
Serial.println(WiFi.localIP()); |
|||
|
|||
// Set up mDNS responder:
|
|||
// - first argument is the domain name, in this example
|
|||
// the fully-qualified domain name is "esp8266.local"
|
|||
// - second argument is the IP address to advertise
|
|||
// we send our IP address on the WiFi network
|
|||
if (!MDNS.begin("soundboard")) { |
|||
Serial.println("Error setting up MDNS responder!"); |
|||
while(1) { |
|||
delay(1000); |
|||
} |
|||
} |
|||
Serial.println("mDNS responder started"); |
|||
|
|||
// Start TCP (HTTP) server
|
|||
server.begin(); |
|||
Serial.println("TCP server started"); |
|||
|
|||
// Add service to MDNS-SD
|
|||
MDNS.addService("http", "tcp", 80); |
|||
} |
|||
|
|||
void Wifi::loop() { |
|||
// Check if a client has connected
|
|||
WiFiClient client = server.available(); |
|||
if (!client) { |
|||
return; |
|||
} |
|||
Serial.println(""); |
|||
Serial.println("New client"); |
|||
|
|||
// Wait for data from client to become available
|
|||
while(client.connected() && !client.available()){ |
|||
delay(1); |
|||
} |
|||
|
|||
// Read the first line of HTTP request
|
|||
String req = client.readStringUntil('\r'); |
|||
|
|||
// First line of HTTP request looks like "GET /path HTTP/1.1"
|
|||
// Retrieve the "/path" part by finding the spaces
|
|||
int addr_start = req.indexOf(' '); |
|||
int addr_end = req.indexOf(' ', addr_start + 1); |
|||
if (addr_start == -1 || addr_end == -1) { |
|||
Serial.print("Invalid request: "); |
|||
Serial.println(req); |
|||
return; |
|||
} |
|||
req = req.substring(addr_start + 1, addr_end); |
|||
Serial.print("Request: "); |
|||
Serial.println(req); |
|||
client.flush(); |
|||
|
|||
String s; |
|||
if (req == "/") |
|||
{ |
|||
IPAddress ip = WiFi.localIP(); |
|||
String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]); |
|||
s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>Hello from ESP32 at "; |
|||
s += ipStr; |
|||
s += "</html>\r\n\r\n"; |
|||
Serial.println("Sending 200"); |
|||
} |
|||
else |
|||
{ |
|||
s = "HTTP/1.1 404 Not Found\r\n\r\n"; |
|||
Serial.println("Sending 404"); |
|||
} |
|||
client.print(s); |
|||
|
|||
Serial.println("Done with client"); |
|||
} |
|||
|
|||
void Wifi::end() { |
|||
} |
@ -0,0 +1,26 @@ |
|||
#ifndef _WIFI_H |
|||
#define _WIFI_H |
|||
|
|||
#include "Arduino.h" |
|||
|
|||
#include <WiFi.h> |
|||
#include <ESPmDNS.h> |
|||
#include <WiFiClient.h> |
|||
|
|||
#include "hardware.h" |
|||
|
|||
|
|||
class Wifi { |
|||
public: |
|||
Wifi(); |
|||
void init(); |
|||
void end(); |
|||
void loop(); |
|||
// esp_err_t event_handler(void *ctx, system_event_t *event);
|
|||
// void wifi_init_sta();
|
|||
// void wifi_init_softap();
|
|||
private: |
|||
WiFiServer server; |
|||
}; |
|||
|
|||
#endif /* _WIFI_H */ |
Loading…
Reference in new issue