mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-11-04 08:01:38 +01:00 
			
		
		
		
	
		
			
	
	
		
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Arduino
		
	
	
	
	
	
		
		
			
		
	
	
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Arduino
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								  Wifi secure connection example for ESP32 using a pre-shared key (PSK)
							 | 
						||
| 
								 | 
							
								  This is useful with MQTT servers instead of using a self-signed cert, tested with mosquitto.
							 | 
						||
| 
								 | 
							
								  Running on TLS 1.2 using mbedTLS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  To test run a test server using: openssl s_server -accept 8443 -psk 1a2b3c4d -nocert
							 | 
						||
| 
								 | 
							
								  It will show the http request made, but there's no easy way to send a reply back...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  2017 - Evandro Copercini - Apache 2.0 License.
							 | 
						||
| 
								 | 
							
								  2018 - Adapted for PSK by Thorsten von Eicken
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <WiFiClientSecure.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if 0
							 | 
						||
| 
								 | 
							
								const char* ssid     = "your-ssid";     // your network SSID (name of wifi network)
							 | 
						||
| 
								 | 
							
								const char* password = "your-password"; // your network password
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								const char* ssid     = "test";     // your network SSID (name of wifi network)
							 | 
						||
| 
								 | 
							
								const char* password = "securetest"; // your network password
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//const char*  server = "server.local";  // Server hostname
							 | 
						||
| 
								 | 
							
								const IPAddress server = IPAddress(192, 168, 0, 14);  // Server IP address
							 | 
						||
| 
								 | 
							
								const int    port = 8443; // server's port (8883 for MQTT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const char*  pskIdent = "Client_identity"; // PSK identity (sometimes called key hint)
							 | 
						||
| 
								 | 
							
								const char*  psKey = "1a2b3c4d"; // PSK Key (must be hex string without 0x)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								WiFiClientSecure client;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void setup() {
							 | 
						||
| 
								 | 
							
								  //Initialize serial and wait for port to open:
							 | 
						||
| 
								 | 
							
								  Serial.begin(115200);
							 | 
						||
| 
								 | 
							
								  delay(100);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Serial.print("Attempting to connect to SSID: ");
							 | 
						||
| 
								 | 
							
								  Serial.println(ssid);
							 | 
						||
| 
								 | 
							
								  WiFi.begin(ssid, password);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // attempt to connect to Wifi network:
							 | 
						||
| 
								 | 
							
								  while (WiFi.status() != WL_CONNECTED) {
							 | 
						||
| 
								 | 
							
								    Serial.print(".");
							 | 
						||
| 
								 | 
							
								    // wait 1 second for re-trying
							 | 
						||
| 
								 | 
							
								    delay(1000);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Serial.print("Connected to ");
							 | 
						||
| 
								 | 
							
								  Serial.println(ssid);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  client.setPreSharedKey(pskIdent, psKey);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Serial.println("\nStarting connection to server...");
							 | 
						||
| 
								 | 
							
								  if (!client.connect(server, port))
							 | 
						||
| 
								 | 
							
								    Serial.println("Connection failed!");
							 | 
						||
| 
								 | 
							
								  else {
							 | 
						||
| 
								 | 
							
								    Serial.println("Connected to server!");
							 | 
						||
| 
								 | 
							
								    // Make a HTTP request:
							 | 
						||
| 
								 | 
							
								    client.println("GET /a/check HTTP/1.0");
							 | 
						||
| 
								 | 
							
								    client.print("Host: ");
							 | 
						||
| 
								 | 
							
								    client.println(server);
							 | 
						||
| 
								 | 
							
								    client.println("Connection: close");
							 | 
						||
| 
								 | 
							
								    client.println();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    while (client.connected()) {
							 | 
						||
| 
								 | 
							
								      String line = client.readStringUntil('\n');
							 | 
						||
| 
								 | 
							
								      if (line == "\r") {
							 | 
						||
| 
								 | 
							
								        Serial.println("headers received");
							 | 
						||
| 
								 | 
							
								        break;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    // if there are incoming bytes available
							 | 
						||
| 
								 | 
							
								    // from the server, read them and print them:
							 | 
						||
| 
								 | 
							
								    while (client.available()) {
							 | 
						||
| 
								 | 
							
								      char c = client.read();
							 | 
						||
| 
								 | 
							
								      Serial.write(c);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    client.stop();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void loop() {
							 | 
						||
| 
								 | 
							
								  // do nothing
							 | 
						||
| 
								 | 
							
								}
							 |