This is my recommended starting point to get a webserver running on the ESP32 using PlatformIO:
#include <Arduino.h> #include <WiFi.h> #include <ESPAsyncWebServer.h> #include <ArduinoJson.h> AsyncWebServer server(80); void setup() { Serial.begin(115200); // Connect Wifi, restart if not connecting // https://techoverflow.net/2021/01/21/how-to-fix-esp32-not-connecting-to-the-wifi-network/ WiFi.begin("MyWifiSSID", "MyWifiPassword"); uint32_t notConnectedCounter = 0; while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.println("Wifi connecting..."); notConnectedCounter++; if(notConnectedCounter > 150) { // Reset board if not connected after 15s Serial.println("Resetting due to Wifi not connecting..."); ESP.restart(); } } Serial.print("Wifi connected, IP address: "); Serial.println(WiFi.localIP()); // Initialize webserver URLs server.on("/api/wifi-info", HTTP_GET, [](AsyncWebServerRequest *request) { AsyncResponseStream *response = request->beginResponseStream("application/json"); DynamicJsonDocument json(1024); json["status"] = "ok"; json["ssid"] = WiFi.SSID(); json["ip"] = WiFi.localIP().toString(); serializeJson(json, *response); request->send(response); }); // Start webserver server.begin(); } void loop() { // put your main code here, to run repeatedly: }
Remember to replace your Wifi credentials! WiFi.begin("MyWifiSSID", "MyWifiPassword");
To your platformio.ini
add:
monitor_speed = 115200 lib_deps = ESP Async [email protected] [email protected]
My complete platformio.ini looks like this:
[env:nodemcu-32s] platform = espressif32 board = nodemcu-32s framework = arduino monitor_speed = 115200 lib_deps = ESP Async [email protected] [email protected]
Use PlatformIO’s Upload and Monitor so you can see the IP address of the device in your Wifi network, for example:
Wifi connected, IP address: 192.168.178.90
then goto http://192.168.178.90/api/wifi-info
(replace 192.168.178.90 by the IP address of the ESP32 that you can see on the command line!
You should now see JSON like:
{ status: "ok", ssid: "MyWifiSSID", ip: "192.168.178.90" }
Remember that you can use a browser plugin like JSON Viewer for Chrome in order to auto-format JSON documents!