Hendrik Langer
7 years ago
1 changed files with 147 additions and 0 deletions
@ -0,0 +1,147 @@ |
|||
/*
|
|||
ESP32 mDNS responder sample |
|||
|
|||
This is an example of an HTTP server that is accessible |
|||
via http://esp32.local URL thanks to mDNS responder.
|
|||
|
|||
Instructions: |
|||
- Update WiFi SSID and password as necessary. |
|||
- Flash the sketch to the ESP32 board |
|||
- Install host software: |
|||
- For Linux, install Avahi (http://avahi.org/).
|
|||
- For Windows, install Bonjour (http://www.apple.com/support/bonjour/).
|
|||
- For Mac OSX and iOS support is built in through Bonjour already. |
|||
- Point your browser to http://esp32.local, you should see a response.
|
|||
|
|||
*/ |
|||
|
|||
|
|||
#include <WiFi.h> |
|||
#include <ESPmDNS.h> |
|||
#include <WiFiClient.h> |
|||
#include "esp32-hal-ledc.h" |
|||
|
|||
const char* ssid = "ssid"; |
|||
const char* password = "password"; |
|||
|
|||
#define SERVO_LOW 4000 |
|||
#define SERVO_HIGH 8000 |
|||
|
|||
#define SERVO_CHANNEL 5 |
|||
|
|||
#define TIMER_WIDTH 16 |
|||
|
|||
// TCP server at port 80 will respond to HTTP requests
|
|||
WiFiServer server(80); |
|||
|
|||
void setup(void) |
|||
{ |
|||
Serial.begin(115200); |
|||
|
|||
// Connect to WiFi network
|
|||
WiFi.begin(ssid, password); |
|||
Serial.println(""); |
|||
|
|||
// Wait for connection
|
|||
while (WiFi.status() != WL_CONNECTED) { |
|||
delay(500); |
|||
Serial.print("."); |
|||
} |
|||
Serial.println(""); |
|||
Serial.print("Connected to "); |
|||
Serial.println(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("esp32")) { |
|||
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); |
|||
|
|||
ledcSetup(1, 50, TIMER_WIDTH); |
|||
ledcAttachPin(SERVO_CHANNEL,1); |
|||
ledcWrite(1, SERVO_LOW); |
|||
delay(1000); |
|||
ledcDetachPin(SERVO_CHANNEL); |
|||
} |
|||
|
|||
void loop(void) |
|||
{ |
|||
// 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 if (req == "/push") { |
|||
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, pushing!"; |
|||
s += "</html>\r\n\r\n"; |
|||
Serial.println("/push"); |
|||
ledcAttachPin(SERVO_CHANNEL,1); |
|||
ledcWrite(1, SERVO_HIGH); |
|||
delay(1500); |
|||
ledcWrite(1, SERVO_LOW); |
|||
delay(1500); |
|||
ledcDetachPin(SERVO_CHANNEL); |
|||
} |
|||
else |
|||
{ |
|||
s = "HTTP/1.1 404 Not Found\r\n\r\n"; |
|||
Serial.println("Sending 404"); |
|||
} |
|||
client.print(s); |
|||
|
|||
Serial.println("Done with client"); |
|||
} |
|||
|
Loading…
Reference in new issue