mirror of
				https://github.com/esp8266/Arduino.git
				synced 2025-10-31 15:50:55 +03:00 
			
		
		
		
	* update examples * fix serial<->tcp example, use STASSID instead of SSID (name collision) * fix HTTPSRequest.ino * update AxTLS HTTPS examples, update AxTLS API to deprecated * fixes * fixes + fix astyle (no preproc directives) + restyling script * fix HTTPClient library * fixes * common.sh: do not reload arduino when already present (for locally CI testing) * common.sh: do not reload ArduinoJson when already present (for locally CI testing) * fix * fix * fix deprecated example * fix WiFiHTTPSServer.ino * reduce footprint * wipfix * fix led builtin * fix example * finished updating APSSID on all examples * style * restyle examples * helper to run CI test locally * local CI runner more verbose * +const * deprecation deprecation * deprecation * Update NTPClient.ino const char[] => const char * * Update interactive.ino const char[] => const char *
		
			
				
	
	
		
			107 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|     This sketch demonstrates how to set up a simple HTTP-like server.
 | |
|     The server will set a GPIO pin depending on the request
 | |
|       http://server_ip/gpio/0 will set the GPIO2 low,
 | |
|       http://server_ip/gpio/1 will set the GPIO2 high
 | |
|     server_ip is the IP address of the ESP8266 module, will be
 | |
|     printed to Serial when the module is connected.
 | |
| */
 | |
| 
 | |
| #include <ESP8266WiFi.h>
 | |
| 
 | |
| #ifndef STASSID
 | |
| #define STASSID "your-ssid"
 | |
| #define STAPSK  "your-password"
 | |
| #endif
 | |
| 
 | |
| const char* ssid = STASSID;
 | |
| const char* password = STAPSK;
 | |
| 
 | |
| // Create an instance of the server
 | |
| // specify the port to listen on as an argument
 | |
| WiFiServer server(80);
 | |
| 
 | |
| void setup() {
 | |
|   Serial.begin(115200);
 | |
| 
 | |
|   // prepare LED
 | |
|   pinMode(LED_BUILTIN, OUTPUT);
 | |
|   digitalWrite(LED_BUILTIN, 0);
 | |
| 
 | |
|   // Connect to WiFi network
 | |
|   Serial.println();
 | |
|   Serial.println();
 | |
|   Serial.print(F("Connecting to "));
 | |
|   Serial.println(ssid);
 | |
| 
 | |
|   WiFi.mode(WIFI_STA);
 | |
|   WiFi.begin(ssid, password);
 | |
| 
 | |
|   while (WiFi.status() != WL_CONNECTED) {
 | |
|     delay(500);
 | |
|     Serial.print(F("."));
 | |
|   }
 | |
|   Serial.println();
 | |
|   Serial.println(F("WiFi connected"));
 | |
| 
 | |
|   // Start the server
 | |
|   server.begin();
 | |
|   Serial.println(F("Server started"));
 | |
| 
 | |
|   // Print the IP address
 | |
|   Serial.println(WiFi.localIP());
 | |
| }
 | |
| 
 | |
| void loop() {
 | |
|   // Check if a client has connected
 | |
|   WiFiClient client = server.available();
 | |
|   if (!client) {
 | |
|     return;
 | |
|   }
 | |
|   Serial.println(F("new client"));
 | |
| 
 | |
|   client.setTimeout(5000); // default is 1000
 | |
| 
 | |
|   // Read the first line of the request
 | |
|   String req = client.readStringUntil('\r');
 | |
|   Serial.println(F("request: "));
 | |
|   Serial.println(req);
 | |
| 
 | |
|   // Match the request
 | |
|   int val;
 | |
|   if (req.indexOf(F("/gpio/0")) != -1) {
 | |
|     val = 0;
 | |
|   } else if (req.indexOf(F("/gpio/1")) != -1) {
 | |
|     val = 1;
 | |
|   } else {
 | |
|     Serial.println(F("invalid request"));
 | |
|     val = digitalRead(LED_BUILTIN);
 | |
|   }
 | |
| 
 | |
|   // Set LED according to the request
 | |
|   digitalWrite(LED_BUILTIN, val);
 | |
| 
 | |
|   // read/ignore the rest of the request
 | |
|   // do not client.flush(): it is for output only, see below
 | |
|   while (client.available()) {
 | |
|     // byte by byte is not very efficient
 | |
|     client.read();
 | |
|   }
 | |
| 
 | |
|   // Send the response to the client
 | |
|   // it is OK for multiple small client.print/write,
 | |
|   // because nagle algorithm will group them into one single packet
 | |
|   client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now "));
 | |
|   client.print((val) ? F("high") : F("low"));
 | |
|   client.print(F("<br><br>Click <a href='http://"));
 | |
|   client.print(WiFi.localIP());
 | |
|   client.print(F("/gpio/1'>here</a> to switch LED GPIO on, or <a href='http://"));
 | |
|   client.print(WiFi.localIP());
 | |
|   client.print(F("/gpio/0'>here</a> to switch LED GPIO off.</html>"));
 | |
| 
 | |
|   // The client will actually be *flushed* then disconnected
 | |
|   // when the function returns and 'client' object is destroyed (out-of-scope)
 | |
|   // flush = ensure written data are received by the other side
 | |
|   Serial.println(F("Disconnecting from client"));
 | |
| }
 |