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